Hibok
您不能選擇超過 %s 個話題 話題必須以字母或數字為開頭,可包含連接號 ('-') 且最長為 35 個字
 
 
 
 
 
 

254 行
7.9 KiB

  1. import 'package:chat/data/UserData.dart';
  2. import 'package:chat/home/realtimehelper/translation_butler_page.dart';
  3. import 'package:chat/home/realtimehelper/travel_butler_page.dart';
  4. import 'package:chat/models/group_info_model.dart';
  5. import 'package:chat/utils/HttpUtil.dart';
  6. import 'package:chat/utils/MessageMgr.dart';
  7. import 'package:chat/utils/TokenMgr.dart';
  8. import 'package:chat/utils/screen.dart';
  9. import 'package:dio/dio.dart';
  10. import 'package:flutter/cupertino.dart';
  11. import 'package:flutter/material.dart';
  12. import 'package:oktoast/oktoast.dart';
  13. import '../../data/constants.dart';
  14. import '../../generated/i18n.dart';
  15. import '../../r.dart';
  16. class RealTimeHelperPage extends StatefulWidget {
  17. final GroupInfoModel groupInfoModel;
  18. RealTimeHelperPage({Key key, this.groupInfoModel}) : super(key: key);
  19. @override
  20. State<StatefulWidget> createState() {
  21. return RealTimeHelperPageState();
  22. }
  23. }
  24. class RealTimeHelperPageState extends State<RealTimeHelperPage> {
  25. bool isTranslateHKLogin = false;
  26. bool isReady=false;
  27. @override
  28. void initState() {
  29. super.initState();
  30. MessageMgr().on('update_system',refresh);
  31. WidgetsBinding.instance.addPostFrameCallback((_) {
  32. isTranslateAndStatus();
  33. });
  34. }
  35. refresh(args){
  36. isTranslateAndStatus();
  37. }
  38. ///实时帮-翻译人员状态,是否是翻译人员
  39. isTranslateAndStatus() async {
  40. Map data = {
  41. "userId": UserData().basicInfo.userId,
  42. };
  43. data['sign'] = TokenMgr().getSign(data);
  44. Response res = await HttpUtil().post('steward/userStatus', data: data);
  45. if (res == null) {
  46. print('请求异常');
  47. return;
  48. }
  49. var resData = res.data;
  50. if (resData['code'] == 0) {
  51. isReady=true;
  52. print('xxxdksldsd $resData');
  53. UserData().isTranslateUser = resData['data']['isTranslateUser'] == 1;
  54. int status = resData['data']['Status'] ;
  55. if(status==1){
  56. isTranslateHKLogin=true;
  57. }
  58. setState(() {
  59. });
  60. print('翻译人员状态 status $status isTranslateUser ${UserData().isTranslateUser} ');
  61. }else{
  62. print('获取翻译人员翻译人员状态 失败 ${resData['msg']}');
  63. }
  64. }
  65. @override
  66. void dispose() {
  67. super.dispose();
  68. MessageMgr().on('update_system',refresh);
  69. }
  70. @override
  71. Widget build(BuildContext context) {
  72. Widget appBar = AppBar(
  73. backgroundColor: Colors.white,
  74. title: Text(
  75. I18n.of(context).real_time_helper,
  76. textScaleFactor: 1.0,
  77. style: TextStyle(color: AppColors.NewAppbarTextColor),
  78. ),
  79. // leading: CustomUI.buildCustomLeading(context),
  80. centerTitle: false,
  81. );
  82. return UserData().isTranslateUser?Scaffold(
  83. // appBar: appBar,
  84. body: Container(
  85. color: Color(0xffE8EAF0),
  86. child: Stack(
  87. children: <Widget>[
  88. Container(
  89. child: Image.asset(
  90. R.assetsImagesImgRealtimeBg2,
  91. width: MediaQuery.of(context).size.width,
  92. height:250,
  93. fit: BoxFit.cover,
  94. ),
  95. ),
  96. Container(
  97. child: Image.asset(
  98. R.assetsImagesImgRealtimeBg1,
  99. width: MediaQuery.of(context).size.width,
  100. height:MediaQuery.of(context).padding.top+80,
  101. fit: BoxFit.cover,
  102. ),
  103. ),
  104. Container(
  105. child: SafeArea(
  106. child: ListView(
  107. children: <Widget>[
  108. Container(
  109. alignment: Alignment.center,
  110. child: fixedText(I18n.of(context).translation_butler_title3, color: Colors.white, fontSize: 21),
  111. ),
  112. UnconstrainedBox(child: InkWell(onTap: (){
  113. HttpUtil().translateHKloginRecord(!isTranslateHKLogin,(){
  114. isTranslateHKLogin = !isTranslateHKLogin;
  115. setState(() {
  116. });
  117. });
  118. },child: Container(
  119. alignment: Alignment.center,
  120. padding: EdgeInsets.only(left: 11,right: 11,top: 3,bottom: 3),
  121. decoration: BoxDecoration(
  122. border: Border.all(color: isTranslateHKLogin?Color(0xFFFEE645):Colors.white, width: 1),
  123. borderRadius: BorderRadius.circular(11)),
  124. child: fixedText(isTranslateHKLogin?I18n.of(context).translation_butler_start_receive_order:I18n.of(context).translation_butler_stop_receive_order, color: isTranslateHKLogin?Color(0xFFFEE645):Colors.white, fontSize: 15),
  125. ),),),
  126. Container(
  127. padding: EdgeInsets.only(left: 13,top: 20),
  128. child: fixedText(I18n.of(context).real_time_helper, color: Colors.white, fontSize: 22,fontWeight: FontWeight.w700),
  129. ),
  130. helperCard(I18n.of(context).translation_butler,
  131. R.assetsImagesImgTranslationButler, () {
  132. if (UserData().isTranslateUser) {
  133. showToast(I18n.of(context).translation_butler_stop_tips);
  134. } else {
  135. Navigator.of(context).push(
  136. MaterialPageRoute(
  137. builder: (_) => TranslationButlerPage(),
  138. ),
  139. );
  140. }
  141. }, textColor: Color(0xff2685FA)),
  142. helperCard(I18n.of(context).travel_butler,
  143. R.assetsImagesImgTravelButler, () {
  144. Navigator.of(context).push(
  145. MaterialPageRoute(
  146. builder: (_) => TravelButlerPage(),
  147. ),
  148. );
  149. }, textColor: Color(0xffff682d)),
  150. SizedBox(
  151. height: 15,
  152. ),
  153. ],
  154. )),
  155. )
  156. ],
  157. ),
  158. ),
  159. ):Scaffold(
  160. appBar: appBar,
  161. body: SafeArea(
  162. child: Container(
  163. color: Color(0xffE8EAF0),
  164. child: ListView(
  165. children: <Widget>[
  166. helperCard(I18n.of(context).translation_butler,
  167. R.assetsImagesImgTranslationButler, () {
  168. Navigator.of(context).push(
  169. MaterialPageRoute(
  170. builder: (_) => TranslationButlerPage(),
  171. ),
  172. );
  173. },textColor: Color(0xff2685FA)),
  174. helperCard(
  175. I18n.of(context).travel_butler, R.assetsImagesImgTravelButler,
  176. () {
  177. Navigator.of(context).push(
  178. MaterialPageRoute(
  179. builder: (_) => TravelButlerPage(),
  180. ),
  181. );
  182. },textColor: Color(0xffff682d)),
  183. SizedBox(
  184. height: 15,
  185. ),
  186. ],
  187. ),
  188. ),
  189. ),
  190. );
  191. }
  192. Widget helperCard(String title, String assets, Function callBack,
  193. {Color textColor}) {
  194. return InkWell(
  195. child: Container(
  196. margin: EdgeInsets.all(10),
  197. child: Card(
  198. elevation: 2, // 阴影
  199. shape: RoundedRectangleBorder(
  200. borderRadius: BorderRadius.circular(10),
  201. // side: BorderSide(color: Colors.green,width: 25),
  202. ),
  203. child: Container(
  204. padding: EdgeInsets.all(10),
  205. child: Column(
  206. children: <Widget>[
  207. Image.asset(
  208. assets,
  209. ),
  210. Padding(
  211. padding: EdgeInsets.only(top: 15, bottom: 15),
  212. child: Text(
  213. title + ' >>',
  214. textScaleFactor: 1.0,
  215. style: TextStyle(color: textColor, fontSize: 20),
  216. ),
  217. )
  218. ],
  219. ),
  220. ),
  221. ),
  222. ),
  223. onTap: isReady?callBack:null,
  224. );
  225. }
  226. }