Hibok
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 
 

246 行
8.8 KiB

  1. import 'package:cached_network_image/cached_network_image.dart';
  2. import 'package:chat/data/UserData.dart';
  3. import 'package:chat/data/chat_data_mgr.dart';
  4. import 'package:chat/data/group_data_mgr.dart';
  5. import 'package:chat/home/add_friend.dart';
  6. import 'package:chat/home/group_announcement.dart';
  7. import 'package:chat/home/group_manage_page.dart';
  8. import 'package:chat/models/group_info_model.dart';
  9. import 'package:chat/models/money_change.dart';
  10. import 'package:chat/models/ref_name_provider.dart';
  11. import 'package:chat/utils/MessageMgr.dart';
  12. import 'package:chat/utils/group_member_model.dart';
  13. import 'package:chat/utils/msgHandler.dart';
  14. import 'package:chat/utils/screen.dart';
  15. import 'package:flutter/cupertino.dart';
  16. import 'package:flutter/material.dart';
  17. import 'package:oktoast/oktoast.dart';
  18. import 'package:provider/provider.dart';
  19. import '../../data/constants.dart';
  20. import '../../generated/i18n.dart';
  21. import '../../r.dart';
  22. import '../../utils/CustomUI.dart';
  23. import '../../utils/FullWithButton.dart';
  24. import '../../utils/app_navigator.dart';
  25. import '../create_group_view.dart';
  26. import 'package:chat/utils/PopUpMenu.dart' as myPop;
  27. class TranslationButlerPage extends StatefulWidget {
  28. final GroupInfoModel groupInfoModel;
  29. TranslationButlerPage({Key key, this.groupInfoModel}) : super(key: key);
  30. @override
  31. State<StatefulWidget> createState() {
  32. return TranslationButlerPageState();
  33. }
  34. }
  35. class TranslationButlerPageState extends State<TranslationButlerPage> {
  36. int curToLang = 1;
  37. int curSourceLang = UserData().language;
  38. List langList;
  39. @override
  40. void initState() {
  41. super.initState();
  42. }
  43. @override
  44. void didChangeDependencies() {
  45. super.didChangeDependencies();
  46. langList = [
  47. I18n.of(context).english,
  48. I18n.of(context).Vietnamese,
  49. I18n.of(context).traditional_Chinese,
  50. I18n.of(context).Simplified_Chinese,
  51. I18n.of(context).Korean,
  52. I18n.of(context).Japanese,
  53. ];
  54. }
  55. @override
  56. void dispose() {
  57. // MessageMgr().off('Update Group Info', updateGroupInfo);
  58. super.dispose();
  59. }
  60. _langPopMenu(bool isSource) {
  61. var curIndex = isSource ? curSourceLang : curToLang;
  62. return myPop.PopupMenuButton(
  63. child: Container(
  64. constraints: BoxConstraints(
  65. minHeight: 41,
  66. minWidth: 115,
  67. maxWidth: 165),
  68. decoration: BoxDecoration(color: Color(0xffD3E7FF),borderRadius:BorderRadius.circular(10) ),
  69. child: Row(
  70. children: <Widget>[
  71. Expanded(child: Text(langList[curIndex],textAlign: TextAlign.center,textScaleFactor: 1.0,style: TextStyle(color: Colors.black, fontSize: 16),)),
  72. Icon(IconData(0xe63b, fontFamily: Constants.IconFontFamily),
  73. color: Colors.grey)
  74. ],
  75. ),
  76. ),
  77. offset: Offset(0, 100),
  78. onSelected: (int index) {
  79. if (curIndex != index) {
  80. if (isSource) {
  81. curSourceLang = index;
  82. } else {
  83. curToLang = index;
  84. }
  85. print('更换翻译语言');
  86. setState(() {});
  87. }
  88. },
  89. itemBuilder: (BuildContext context) {
  90. return List<myPop.PopupMenuItem<int>>.generate(langList.length,
  91. (int i) {
  92. return myPop.PopupMenuItem(
  93. child: Container(
  94. alignment: Alignment.center,
  95. color: Colors.white,
  96. padding: EdgeInsets.symmetric(vertical: 10, horizontal: 10),
  97. child: Text(langList[i],
  98. textScaleFactor: 1.0,
  99. maxLines: 1,
  100. style: TextStyle(
  101. color: i == curIndex
  102. ? Colors.blueAccent
  103. : Color(AppColors.AppBarColor),
  104. fontSize: 14)),
  105. ),
  106. value: i,
  107. );
  108. });
  109. });
  110. }
  111. @override
  112. Widget build(BuildContext context) {
  113. Widget appBar = AppBar(
  114. backgroundColor: AppColors.NewAppbarBgColor,
  115. title: Text(
  116. I18n.of(context).translation_butler,
  117. textScaleFactor: 1.0,
  118. style: TextStyle(color: AppColors.NewAppbarTextColor),
  119. ),
  120. // leading: CustomUI.buildCustomLeading(context),
  121. centerTitle: true,
  122. actions: <Widget>[ Container(child: CustomUI.buildImageLabel(
  123. R.assetsImagesCoin, Provider.of<MoneyChangeProvider>(context).money,
  124. isLeft: true),decoration: BoxDecoration(borderRadius:BorderRadius.circular(10)),),SizedBox(width: 10,)],
  125. );
  126. return Scaffold(
  127. appBar: appBar,
  128. body: SafeArea(
  129. child: Container(
  130. color: Color(0xffE8EAF0),
  131. child: ListView(
  132. children: <Widget>[
  133. Padding(
  134. padding: EdgeInsets.only(left: 10, right: 10, top: 15),
  135. child: Text(
  136. I18n.of(context).translation_butler_tips,
  137. textScaleFactor: 1.0,
  138. style: TextStyle(color: Color(0xffABABAB), fontSize: 13),
  139. ),
  140. ),
  141. Container(
  142. margin: EdgeInsets.all(10),
  143. child: Card(
  144. elevation: 5, // 阴影
  145. shape: RoundedRectangleBorder(
  146. borderRadius: BorderRadius.circular(10),
  147. // side: BorderSide(color: Colors.green,width: 25),
  148. ),
  149. child: Container(
  150. padding: EdgeInsets.all(10),
  151. child: Column(
  152. crossAxisAlignment: CrossAxisAlignment.start,
  153. children: <Widget>[
  154. Text(
  155. I18n.of(context).choose_language,
  156. textScaleFactor: 1.0,
  157. textAlign: TextAlign.left,
  158. style: TextStyle(color: AppColors.NewAppbarTextColor,fontSize: 17),
  159. ),
  160. Row(
  161. children: <Widget>[
  162. Image.asset(
  163. R.assetsImagesImgTranslationIcon,
  164. width: 195,
  165. height: 175,
  166. ),
  167. Column(
  168. mainAxisSize: MainAxisSize.min,
  169. children: <Widget>[
  170. _langPopMenu(true),
  171. SizedBox(width: 10),
  172. InkWell(
  173. onTap: () {
  174. var temp = curSourceLang;
  175. curSourceLang = curToLang;
  176. curToLang = temp;
  177. setState(() {});
  178. },
  179. child: Container(
  180. child: Icon(
  181. IconData(
  182. 0xe669,
  183. fontFamily: Constants.IconFontFamily,
  184. ),
  185. size: 12,
  186. ),
  187. padding: EdgeInsets.symmetric(
  188. vertical: 5, horizontal: 5),
  189. ),
  190. ),
  191. SizedBox(width: 20),
  192. _langPopMenu(false),
  193. ],
  194. ),
  195. ],
  196. ),
  197. Padding(
  198. padding: EdgeInsets.only(left: 10, right: 10, top: 15),
  199. child: Text(
  200. I18n.of(context).translation_butler_rules,
  201. textScaleFactor: 1.0,
  202. style: TextStyle(color: Color(0xffABABAB), fontSize: 13),
  203. ),
  204. ),
  205. ],
  206. ),
  207. ),
  208. ),
  209. ),
  210. Container(
  211. margin: EdgeInsets.only(left: 70, right: 70,top: 50),
  212. height: 47,
  213. child: RaisedButton(
  214. color: Color(0xff3875E9),
  215. shape:RoundedRectangleBorder(
  216. borderRadius: BorderRadius.all(Radius.circular(10))
  217. ),
  218. child: Text(I18n.of(context).translation_butler_call+' (50h)',textScaleFactor: 1.0,style: TextStyle(color: Colors.white,fontSize: 19),),
  219. onPressed: () {
  220. showToast(
  221. '呼叫管家${I18n.of(context).translation_butler_call}');
  222. }),
  223. )
  224. ],
  225. ),
  226. ),
  227. ),
  228. );
  229. }
  230. }