瀏覽代碼

翻译管家/首屏页/实时帮提示

master
jiahao 5 年之前
父節點
當前提交
0b697ab07a
共有 24 個文件被更改,包括 427 次插入139 次删除
  1. 二進制
      assets/fonts/iconfont.ttf
  2. 二進制
      assets/images/img_splash_4.png
  3. 二進制
      assets/images/img_splash_5.png
  4. +27
    -20
      i18n/en-US.json
  5. +9
    -2
      i18n/ja-JP.json
  6. +9
    -2
      i18n/ko-KR.json
  7. +9
    -2
      i18n/vi-VN.json
  8. +10
    -1
      i18n/zh-CN.json
  9. +9
    -2
      i18n/zh-HK.json
  10. +23
    -2
      lib/chat/ChatPage.dart
  11. +1
    -1
      lib/data/constants.dart
  12. +174
    -38
      lib/generated/i18n.dart
  13. +42
    -28
      lib/home/realtimehelper/real_time_helper_page.dart
  14. +5
    -1
      lib/home/realtimehelper/translation_butler_page.dart
  15. +25
    -0
      lib/home/realtimehelper/travel_butler_page.dart
  16. +21
    -6
      lib/home/splash_page.dart
  17. +4
    -0
      lib/r.dart
  18. +1
    -1
      lib/utils/HttpUtil.dart
  19. +0
    -1
      lib/utils/NetUtil.dart
  20. +1
    -1
      lib/utils/file_cache_mgr.dart
  21. +1
    -1
      lib/utils/image_util.dart
  22. +50
    -30
      lib/utils/msgHandler.dart
  23. +4
    -0
      lib/utils/screen.dart
  24. +2
    -0
      pubspec.yaml

二進制
assets/fonts/iconfont.ttf 查看文件


二進制
assets/images/img_splash_4.png 查看文件

Before After
Width: 720  |  Height: 762  |  Size: 332 KiB

二進制
assets/images/img_splash_5.png 查看文件

Before After
Width: 720  |  Height: 763  |  Size: 196 KiB

+ 27
- 20
i18n/en-US.json 查看文件

@@ -1220,25 +1220,32 @@
"translation_more_desc": "More descriptions",
"feedback_assistant": "Feedback helper",
"feedback_tips":"You can give me feedback in case of any questions",
"man_retranslate":"人工重译",
"robot_retranslate":"机器重译",
"see_original":"查看原文",
"man_retranslate":"Manual retranslation",
"robot_retranslate":"Machine retranslation",
"see_original":"View original",
"forward":"Forward",
"copy_download_url":"复制下载地址",
"total_friends_nus":"共/s1位朋友",
"hava_error_photo":"有图片违规",
"translation_butler_evaluation_tips2": "翻译服务已结束,辛苦你了。请保持在线,留意新订单通知",
"translation_butler_push_order_time": "时间:今天/s1 时长:",
"translation_butler_push_order_time2": "下单时间:今天/s1 等待时长:",
"translation_butler_title3": "大神专属",
"translation_butler_start_receive_order": "开启接单",
"translation_butler_stop_receive_order": "未开启接单",
"translation_butler_stop_tips": "翻译人员无法进入创建订单",
"translation_butler_scenes2": "场景:",
"translation_butler_last_item_start": "[翻译管家服务开始]",
"translation_butler_last_item_end": "[翻译管家服务结束]",
"travel_start": "起点",
"travel_end": "终点",
"translation_butler_order_time_out": "翻译订单超时已被取消"
"copy_download_url":"Copy download address",
"total_friends_nus":"Total /s1 friends",
"hava_error_photo":"There are image violations",
"translation_butler_evaluation_tips2": "The translation service is over. It's hard for you. Please stay online and watch for new order notifications",
"translation_butler_push_order_time": "Time: Today/s1 Duration:",
"translation_butler_push_order_time2": "Order time: Today/s1 Waiting time:",
"translation_butler_title3": "Great God Exclusive",
"translation_butler_start_receive_order": "Open Receive order",
"translation_butler_stop_receive_order": "Order not opened",
"translation_butler_stop_tips": "Translators cannot enter create order",
"translation_butler_scenes2": "Scenes:",
"translation_butler_last_item_start": "[Translation housekeeper service starts]",
"translation_butler_last_item_end": "[End of translation butler service]",
"travel_start": "Start",
"travel_end": "End",
"translation_butler_order_time_out": "Translation order timeout has been cancelled",
"translation_butler_order_close_tips": "Translation service has not ended",
"translation_butler_order_close_tips2": "Do you end the translation butler service in advance?",
"translation_butler_order_failed": "Failed to release order",
"translation_butler_order_failed2": "Order generation failed Network exception",
"translation_butler_introduction": "Still annoying that the other person does n’t understand what you say? Choose the language you need to translate and describe the problem you are experiencing. Personal translation butler will be at your service",
"travel_introduction": "Are you traveling further and further away from your destination? Choose your starting point and ending point, the travel manager will accurately measure the distance for you",
"splash_tips_content4": "Unobstructed travel chat",
"splash_tips_content5": "Worry-free your trip"
}

+ 9
- 2
i18n/ja-JP.json 查看文件

@@ -1238,6 +1238,13 @@
"translation_butler_last_item_end": "[翻译管家服务结束]",
"travel_start": "起点",
"travel_end": "终点",
"translation_butler_order_time_out": "翻译订单超时已被取消"
"translation_butler_order_time_out": "翻译订单超时已被取消",
"translation_butler_order_close_tips": "翻译服务未结束不能主动结束",
"translation_butler_order_close_tips2": "是否提前结束翻译管家服务?",
"translation_butler_order_failed": "发布订单失败",
"translation_butler_order_failed2": "订单生成失败 网络异常",
"translation_butler_introduction": "还在烦恼对方听不懂你说什么吗?选择你需要翻译的语言,描述你遇到的问题。贴身翻译管家将随时为你服务",
"travel_introduction": "是否在离目的地越行越远?选择你的起点和终点,出行管家为你精准测距",
"splash_tips_content4": "出行聊天畅通无阻",
"splash_tips_content5": "无忧你的旅行"
}

+ 9
- 2
i18n/ko-KR.json 查看文件

@@ -1239,6 +1239,13 @@
"translation_butler_last_item_end": "[翻译管家服务结束]",
"travel_start": "起点",
"travel_end": "终点",
"translation_butler_order_time_out": "翻译订单超时已被取消"
"translation_butler_order_time_out": "翻译订单超时已被取消",
"translation_butler_order_close_tips": "翻译服务未结束不能主动结束",
"translation_butler_order_close_tips2": "是否提前结束翻译管家服务?",
"translation_butler_order_failed": "发布订单失败",
"translation_butler_order_failed2": "订单生成失败 网络异常",
"translation_butler_introduction": "还在烦恼对方听不懂你说什么吗?选择你需要翻译的语言,描述你遇到的问题。贴身翻译管家将随时为你服务",
"travel_introduction": "是否在离目的地越行越远?选择你的起点和终点,出行管家为你精准测距",
"splash_tips_content4": "出行聊天畅通无阻",
"splash_tips_content5": "无忧你的旅行"
}

+ 9
- 2
i18n/vi-VN.json 查看文件

@@ -1238,6 +1238,13 @@
"translation_butler_last_item_end": "[翻译管家服务结束]",
"travel_start": "起点",
"travel_end": "终点",
"translation_butler_order_time_out": "翻译订单超时已被取消"
"translation_butler_order_time_out": "翻译订单超时已被取消",
"translation_butler_order_close_tips": "翻译服务未结束不能主动结束",
"translation_butler_order_close_tips2": "是否提前结束翻译管家服务?",
"translation_butler_order_failed": "发布订单失败",
"translation_butler_order_failed2": "订单生成失败 网络异常",
"translation_butler_introduction": "还在烦恼对方听不懂你说什么吗?选择你需要翻译的语言,描述你遇到的问题。贴身翻译管家将随时为你服务",
"travel_introduction": "是否在离目的地越行越远?选择你的起点和终点,出行管家为你精准测距",
"splash_tips_content4": "出行聊天畅通无阻",
"splash_tips_content5": "无忧你的旅行"
}

+ 10
- 1
i18n/zh-CN.json 查看文件

@@ -1239,6 +1239,15 @@
"translation_butler_last_item_end": "[翻译管家服务结束]",
"travel_start": "起点",
"travel_end": "终点",
"translation_butler_order_time_out": "翻译订单超时已被取消"
"translation_butler_order_time_out": "翻译订单超时已被取消",
"translation_butler_order_close_tips": "翻译服务未结束不能主动结束",
"translation_butler_order_close_tips2": "是否提前结束翻译管家服务?",
"translation_butler_order_failed": "发布订单失败",
"translation_butler_order_failed2": "订单生成失败 网络异常",
"translation_butler_introduction": "还在烦恼对方听不懂你说什么吗?选择你需要翻译的语言,描述你遇到的问题。贴身翻译管家将随时为你服务",
"travel_introduction": "是否在离目的地越行越远?选择你的起点和终点,出行管家为你精准测距",
"splash_tips_content4": "出行聊天畅通无阻",
"splash_tips_content5": "无忧你的旅行"
}

+ 9
- 2
i18n/zh-HK.json 查看文件

@@ -1238,6 +1238,13 @@
"translation_butler_last_item_end": "[翻译管家服务结束]",
"travel_start": "起点",
"travel_end": "终点",
"translation_butler_order_time_out": "翻译订单超时已被取消"
"translation_butler_order_time_out": "翻译订单超时已被取消",
"translation_butler_order_close_tips": "翻译服务未结束不能主动结束",
"translation_butler_order_close_tips2": "是否提前结束翻译管家服务?",
"translation_butler_order_failed": "发布订单失败",
"translation_butler_order_failed2": "订单生成失败 网络异常",
"translation_butler_introduction": "还在烦恼对方听不懂你说什么吗?选择你需要翻译的语言,描述你遇到的问题。贴身翻译管家将随时为你服务",
"travel_introduction": "是否在离目的地越行越远?选择你的起点和终点,出行管家为你精准测距",
"splash_tips_content4": "出行聊天畅通无阻",
"splash_tips_content5": "无忧你的旅行"
}

+ 23
- 2
lib/chat/ChatPage.dart 查看文件

@@ -486,8 +486,29 @@ class _ChatPageState extends State<ChatPage> {
],
),
onWillPop: () {
goBackCheck();
return Future.value(true);
if(isTranslateButler && !isTranslateButlerFinish){
if(UserData().isTranslateUser){
showToast(I18n.of(context).translation_butler_order_close_tips);
}else{
CustomUI.buildTowConfirm(
context,
I18n.of(context).translation_butler_order_close_tips2,
I18n.of(context).confirm,
(){
setState(() {
isTranslateButlerFinish=true;
});
MsgHandler.sendEndTransHKOrderReq();
Navigator.of(context).pop();
},
I18n.of(context).cancel,
(){ Navigator.of(context).pop();});
}
}else{
Navigator.of(context).pop(); }
return Future.value(false);
});
}


+ 1
- 1
lib/data/constants.dart 查看文件

@@ -276,7 +276,7 @@ class Constants {
static const NewFriendsList = 'NewFriendsList'; //本地缓存的新朋友列表
static const Splash_OPENED = 'splashOpened_13'; //是否加载过引导页
static const Splash_OPENED = 'splashOpened_14'; //是否加载过引导页
static const LocalUsrInfo = 'LocalUsrInfo'; //本地用户数据
static const TranslationHelper = 'translationhelper'; //加载翻译管家相关信息


+ 174
- 38
lib/generated/i18n.dart 查看文件

@@ -2475,46 +2475,62 @@ class I18n implements WidgetsLocalizations {
String get feedback_assistant => "Feedback helper";
/// "You can give me feedback in case of any questions"
String get feedback_tips => "You can give me feedback in case of any questions";
/// "人工重译"
String get man_retranslate => "人工重译";
/// "机器重译"
String get robot_retranslate => "机器重译";
/// "查看原文"
String get see_original => "查看原文";
/// "Manual retranslation"
String get man_retranslate => "Manual retranslation";
/// "Machine retranslation"
String get robot_retranslate => "Machine retranslation";
/// "View original"
String get see_original => "View original";
/// "Forward"
String get forward => "Forward";
/// "复制下载地址"
String get copy_download_url => "复制下载地址";
/// "共/s1位朋友"
String get total_friends_nus => "共/s1位朋友";
/// "有图片违规"
String get hava_error_photo => "有图片违规";
/// "翻译服务已结束,辛苦你了。请保持在线,留意新订单通知"
String get translation_butler_evaluation_tips2 => "翻译服务已结束,辛苦你了。请保持在线,留意新订单通知";
/// "时间:今天/s1 时长:"
String get translation_butler_push_order_time => "时间:今天/s1 时长:";
/// "下单时间:今天/s1 等待时长:"
String get translation_butler_push_order_time2 => "下单时间:今天/s1 等待时长:";
/// "大神专属"
String get translation_butler_title3 => "大神专属";
/// "开启接单"
String get translation_butler_start_receive_order => "开启接单";
/// "未开启接单"
String get translation_butler_stop_receive_order => "未开启接单";
/// "翻译人员无法进入创建订单"
String get translation_butler_stop_tips => "翻译人员无法进入创建订单";
/// "场景:"
String get translation_butler_scenes2 => "场景:";
/// "[翻译管家服务开始]"
String get translation_butler_last_item_start => "[翻译管家服务开始]";
/// "[翻译管家服务结束]"
String get translation_butler_last_item_end => "[翻译管家服务结束]";
/// "起点"
String get travel_start => "起点";
/// "终点"
String get travel_end => "终点";
/// "翻译订单超时已被取消"
String get translation_butler_order_time_out => "翻译订单超时已被取消";
/// "Copy download address"
String get copy_download_url => "Copy download address";
/// "Total /s1 friends"
String get total_friends_nus => "Total /s1 friends";
/// "There are image violations"
String get hava_error_photo => "There are image violations";
/// "The translation service is over. It's hard for you. Please stay online and watch for new order notifications"
String get translation_butler_evaluation_tips2 => "The translation service is over. It's hard for you. Please stay online and watch for new order notifications";
/// "Time: Today/s1 Duration:"
String get translation_butler_push_order_time => "Time: Today/s1 Duration:";
/// "Order time: Today/s1 Waiting time:"
String get translation_butler_push_order_time2 => "Order time: Today/s1 Waiting time:";
/// "Great God Exclusive"
String get translation_butler_title3 => "Great God Exclusive";
/// "Open Receive order"
String get translation_butler_start_receive_order => "Open Receive order";
/// "Order not opened"
String get translation_butler_stop_receive_order => "Order not opened";
/// "Translators cannot enter create order"
String get translation_butler_stop_tips => "Translators cannot enter create order";
/// "Scenes:"
String get translation_butler_scenes2 => "Scenes:";
/// "[Translation housekeeper service starts]"
String get translation_butler_last_item_start => "[Translation housekeeper service starts]";
/// "[End of translation butler service]"
String get translation_butler_last_item_end => "[End of translation butler service]";
/// "Start"
String get travel_start => "Start";
/// "End"
String get travel_end => "End";
/// "Translation order timeout has been cancelled"
String get translation_butler_order_time_out => "Translation order timeout has been cancelled";
/// "Translation service has not ended"
String get translation_butler_order_close_tips => "Translation service has not ended";
/// "Do you end the translation butler service in advance?"
String get translation_butler_order_close_tips2 => "Do you end the translation butler service in advance?";
/// "Failed to release order"
String get translation_butler_order_failed => "Failed to release order";
/// "Order generation failed Network exception"
String get translation_butler_order_failed2 => "Order generation failed Network exception";
/// "Still annoying that the other person does n’t understand what you say? Choose the language you need to translate and describe the problem you are experiencing. Personal translation butler will be at your service"
String get translation_butler_introduction => "Still annoying that the other person does n’t understand what you say? Choose the language you need to translate and describe the problem you are experiencing. Personal translation butler will be at your service";
/// "Are you traveling further and further away from your destination? Choose your starting point and ending point, the travel manager will accurately measure the distance for you"
String get travel_introduction => "Are you traveling further and further away from your destination? Choose your starting point and ending point, the travel manager will accurately measure the distance for you";
/// "Unobstructed travel chat"
String get splash_tips_content4 => "Unobstructed travel chat";
/// "Worry-free your trip"
String get splash_tips_content5 => "Worry-free your trip";
}

class _I18n_en_US extends I18n {
@@ -6247,6 +6263,30 @@ class _I18n_vi_VN extends I18n {
/// "翻译订单超时已被取消"
@override
String get translation_butler_order_time_out => "翻译订单超时已被取消";
/// "翻译服务未结束不能主动结束"
@override
String get translation_butler_order_close_tips => "翻译服务未结束不能主动结束";
/// "是否提前结束翻译管家服务?"
@override
String get translation_butler_order_close_tips2 => "是否提前结束翻译管家服务?";
/// "发布订单失败"
@override
String get translation_butler_order_failed => "发布订单失败";
/// "订单生成失败 网络异常"
@override
String get translation_butler_order_failed2 => "订单生成失败 网络异常";
/// "还在烦恼对方听不懂你说什么吗?选择你需要翻译的语言,描述你遇到的问题。贴身翻译管家将随时为你服务"
@override
String get translation_butler_introduction => "还在烦恼对方听不懂你说什么吗?选择你需要翻译的语言,描述你遇到的问题。贴身翻译管家将随时为你服务";
/// "是否在离目的地越行越远?选择你的起点和终点,出行管家为你精准测距"
@override
String get travel_introduction => "是否在离目的地越行越远?选择你的起点和终点,出行管家为你精准测距";
/// "出行聊天畅通无阻"
@override
String get splash_tips_content4 => "出行聊天畅通无阻";
/// "无忧你的旅行"
@override
String get splash_tips_content5 => "无忧你的旅行";

@override
TextDirection get textDirection => TextDirection.ltr;
@@ -9975,6 +10015,30 @@ class _I18n_zh_HK extends I18n {
/// "翻译订单超时已被取消"
@override
String get translation_butler_order_time_out => "翻译订单超时已被取消";
/// "翻译服务未结束不能主动结束"
@override
String get translation_butler_order_close_tips => "翻译服务未结束不能主动结束";
/// "是否提前结束翻译管家服务?"
@override
String get translation_butler_order_close_tips2 => "是否提前结束翻译管家服务?";
/// "发布订单失败"
@override
String get translation_butler_order_failed => "发布订单失败";
/// "订单生成失败 网络异常"
@override
String get translation_butler_order_failed2 => "订单生成失败 网络异常";
/// "还在烦恼对方听不懂你说什么吗?选择你需要翻译的语言,描述你遇到的问题。贴身翻译管家将随时为你服务"
@override
String get translation_butler_introduction => "还在烦恼对方听不懂你说什么吗?选择你需要翻译的语言,描述你遇到的问题。贴身翻译管家将随时为你服务";
/// "是否在离目的地越行越远?选择你的起点和终点,出行管家为你精准测距"
@override
String get travel_introduction => "是否在离目的地越行越远?选择你的起点和终点,出行管家为你精准测距";
/// "出行聊天畅通无阻"
@override
String get splash_tips_content4 => "出行聊天畅通无阻";
/// "无忧你的旅行"
@override
String get splash_tips_content5 => "无忧你的旅行";

@override
TextDirection get textDirection => TextDirection.ltr;
@@ -13706,6 +13770,30 @@ class _I18n_zh_CN extends _I18n_zh_HK {
/// "翻译订单超时已被取消"
@override
String get translation_butler_order_time_out => "翻译订单超时已被取消";
/// "翻译服务未结束不能主动结束"
@override
String get translation_butler_order_close_tips => "翻译服务未结束不能主动结束";
/// "是否提前结束翻译管家服务?"
@override
String get translation_butler_order_close_tips2 => "是否提前结束翻译管家服务?";
/// "发布订单失败"
@override
String get translation_butler_order_failed => "发布订单失败";
/// "订单生成失败 网络异常"
@override
String get translation_butler_order_failed2 => "订单生成失败 网络异常";
/// "还在烦恼对方听不懂你说什么吗?选择你需要翻译的语言,描述你遇到的问题。贴身翻译管家将随时为你服务"
@override
String get translation_butler_introduction => "还在烦恼对方听不懂你说什么吗?选择你需要翻译的语言,描述你遇到的问题。贴身翻译管家将随时为你服务";
/// "是否在离目的地越行越远?选择你的起点和终点,出行管家为你精准测距"
@override
String get travel_introduction => "是否在离目的地越行越远?选择你的起点和终点,出行管家为你精准测距";
/// "出行聊天畅通无阻"
@override
String get splash_tips_content4 => "出行聊天畅通无阻";
/// "无忧你的旅行"
@override
String get splash_tips_content5 => "无忧你的旅行";

@override
TextDirection get textDirection => TextDirection.ltr;
@@ -17437,6 +17525,30 @@ class _I18n_ko_KR extends I18n {
/// "翻译订单超时已被取消"
@override
String get translation_butler_order_time_out => "翻译订单超时已被取消";
/// "翻译服务未结束不能主动结束"
@override
String get translation_butler_order_close_tips => "翻译服务未结束不能主动结束";
/// "是否提前结束翻译管家服务?"
@override
String get translation_butler_order_close_tips2 => "是否提前结束翻译管家服务?";
/// "发布订单失败"
@override
String get translation_butler_order_failed => "发布订单失败";
/// "订单生成失败 网络异常"
@override
String get translation_butler_order_failed2 => "订单生成失败 网络异常";
/// "还在烦恼对方听不懂你说什么吗?选择你需要翻译的语言,描述你遇到的问题。贴身翻译管家将随时为你服务"
@override
String get translation_butler_introduction => "还在烦恼对方听不懂你说什么吗?选择你需要翻译的语言,描述你遇到的问题。贴身翻译管家将随时为你服务";
/// "是否在离目的地越行越远?选择你的起点和终点,出行管家为你精准测距"
@override
String get travel_introduction => "是否在离目的地越行越远?选择你的起点和终点,出行管家为你精准测距";
/// "出行聊天畅通无阻"
@override
String get splash_tips_content4 => "出行聊天畅通无阻";
/// "无忧你的旅行"
@override
String get splash_tips_content5 => "无忧你的旅行";

@override
TextDirection get textDirection => TextDirection.ltr;
@@ -21165,6 +21277,30 @@ class _I18n_ja_JP extends I18n {
/// "翻译订单超时已被取消"
@override
String get translation_butler_order_time_out => "翻译订单超时已被取消";
/// "翻译服务未结束不能主动结束"
@override
String get translation_butler_order_close_tips => "翻译服务未结束不能主动结束";
/// "是否提前结束翻译管家服务?"
@override
String get translation_butler_order_close_tips2 => "是否提前结束翻译管家服务?";
/// "发布订单失败"
@override
String get translation_butler_order_failed => "发布订单失败";
/// "订单生成失败 网络异常"
@override
String get translation_butler_order_failed2 => "订单生成失败 网络异常";
/// "还在烦恼对方听不懂你说什么吗?选择你需要翻译的语言,描述你遇到的问题。贴身翻译管家将随时为你服务"
@override
String get translation_butler_introduction => "还在烦恼对方听不懂你说什么吗?选择你需要翻译的语言,描述你遇到的问题。贴身翻译管家将随时为你服务";
/// "是否在离目的地越行越远?选择你的起点和终点,出行管家为你精准测距"
@override
String get travel_introduction => "是否在离目的地越行越远?选择你的起点和终点,出行管家为你精准测距";
/// "出行聊天畅通无阻"
@override
String get splash_tips_content4 => "出行聊天畅通无阻";
/// "无忧你的旅行"
@override
String get splash_tips_content5 => "无忧你的旅行";

@override
TextDirection get textDirection => TextDirection.ltr;


+ 42
- 28
lib/home/realtimehelper/real_time_helper_page.dart 查看文件

@@ -2,6 +2,7 @@ import 'package:chat/data/UserData.dart';
import 'package:chat/home/realtimehelper/translation_butler_page.dart';
import 'package:chat/home/realtimehelper/travel_butler_page.dart';
import 'package:chat/models/group_info_model.dart';
import 'package:chat/utils/CustomUI.dart';
import 'package:chat/utils/HttpUtil.dart';
import 'package:chat/utils/MessageMgr.dart';
import 'package:chat/utils/TokenMgr.dart';
@@ -60,6 +61,8 @@ class RealTimeHelperPageState extends State<RealTimeHelperPage> {
}




@override
Widget build(BuildContext context) {
Widget appBar = AppBar(
@@ -165,7 +168,7 @@ class RealTimeHelperPageState extends State<RealTimeHelperPage> {
builder: (_) => TranslationButlerPage(),
),
);
},textColor: Color(0xff2685FA)),
},textColor: Color(0xff2685FA),tips: I18n.of(context).translation_butler_introduction),
helperCard(
I18n.of(context).travel_butler, R.assetsImagesImgTravelButler,
() {
@@ -174,7 +177,7 @@ class RealTimeHelperPageState extends State<RealTimeHelperPage> {
builder: (_) => TravelButlerPage(),
),
);
},textColor: Color(0xffff682d)),
},textColor: Color(0xffff682d),tips: I18n.of(context).travel_introduction),
SizedBox(
height: 15,
),
@@ -186,37 +189,48 @@ class RealTimeHelperPageState extends State<RealTimeHelperPage> {
}

Widget helperCard(String title, String assets, Function callBack,
{Color textColor}) {
return InkWell(
child: Container(
margin: EdgeInsets.all(10),
child: Card(
elevation: 2, // 阴影
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
{Color textColor,String tips}) {
return Stack(children: <Widget>[
InkWell(
child: Container(
margin: EdgeInsets.all(10),
child: Card(
elevation: 2, // 阴影
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
// side: BorderSide(color: Colors.green,width: 25),
),
child: Container(
padding: EdgeInsets.all(10),
child: Column(
children: <Widget>[
Image.asset(
assets,
),
Padding(
padding: EdgeInsets.only(top: 15, bottom: 15),
child: Text(
title + ' >>',
textScaleFactor: 1.0,
style: TextStyle(color: textColor, fontSize: 20),
),
child: Container(
padding: EdgeInsets.all(10),
child: Column(
children: <Widget>[
Image.asset(
assets,
),
)
],
Padding(
padding: EdgeInsets.only(top: 15, bottom: 15),
child: Text(
title + ' >>',
textScaleFactor: 1.0,
style: TextStyle(color: textColor, fontSize: 20),
),
)
],
),
),
),
),
onTap: callBack,
),
onTap: callBack,
);

Positioned(child: InkWell(child: Container( width: 40,height: 40,child: Align(child: Icon(
IconData(0xe681, fontFamily: Constants.IconFontFamily),
color: Color(0xFFFF7E00),
size: 28.0,
),alignment: Alignment.center,),),onTap: (){
CustomUI.buildTip(context, title, Padding(padding: EdgeInsets.all(10),child: fixedText(tips,fontSize: 14),));
},),right: 21,top: 21,)

],);
}
}

+ 5
- 1
lib/home/realtimehelper/translation_butler_page.dart 查看文件

@@ -73,7 +73,8 @@ class TranslationButlerPageState extends State<TranslationButlerPage> {
SPUtils.save(Constants.TranslationHelper,null);
break;
case TranslateHKMgr.ORDER_STATUS_WAITING:
secondsPassed = 0;
// secondsPassed = 0;
print('开始倒计时$secondsPassed');
waitNum = TranslateHKMgr().waitNum;
waitTimer = Timer.periodic(Duration(seconds: 1), (Timer t) {
handleTick();
@@ -138,6 +139,8 @@ class TranslationButlerPageState extends State<TranslationButlerPage> {
}
secondsPassed =
((DateTime.now().millisecondsSinceEpoch ~/ 1000 - second));
refreshOrder(null);
print('缓存的秒数 $secondsPassed');
} else {
print('time: null');
}
@@ -730,6 +733,7 @@ class TranslationButlerPageState extends State<TranslationButlerPage> {
void cancelOrder()async {
await SPUtils.save(Constants.TranslationHelper, null);
setState(() {
time60=0;
TranslateHKMgr().orderStatus = TranslateHKMgr.ORDER_STATUS_EMPTY;
refreshOrder(null);
MsgHandler.sendCancelTranslateOrder();


+ 25
- 0
lib/home/realtimehelper/travel_butler_page.dart 查看文件

@@ -10,6 +10,7 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:location_permissions/location_permissions.dart';
import 'package:permission_handler/permission_handler.dart';

import '../../data/constants.dart';
@@ -129,6 +130,17 @@ class TravelButlerPageState extends State<TravelButlerPage> {
SizedBox(width: 12,),
Expanded(child: Container( child: Column(mainAxisSize: MainAxisSize.max,children: <Widget>[
InkWell(child: positionLayout(true),onTap: ()async{

if (!UserData().hasLocationPermission) {
CustomUI.buildOneConfirm(
context, I18n.of(context).get_location, I18n.of(context).determine,
() {
Navigator.of(context).pop();
LocationPermissions().openAppSettings();
});
return;
}

startResult = await _openMap(context);
print('ddddd: $startResult');
setState(() {
@@ -136,6 +148,19 @@ class TravelButlerPageState extends State<TravelButlerPage> {
},),
Container(color: Color(0xffD8D8D8),height: 0.8,width: double.maxFinite,),
InkWell(child: positionLayout(false),onTap: ()async{

if (!UserData().hasLocationPermission) {
CustomUI.buildOneConfirm(
context, I18n.of(context).get_location, I18n.of(context).determine,
() {
Navigator.of(context).pop();
LocationPermissions().openAppSettings();
});
return;
}



endResult = await _openMap(context);
setState(() {
});


+ 21
- 6
lib/home/splash_page.dart 查看文件

@@ -33,11 +33,26 @@ class SplashPageState extends State<SplashPage> {
void initState() {
super.initState();

// list.add(SplashBean(
// 'assets/images/img_splash_1.png',
// I18n.of(Constants.getCurrentContext()).splash_tips1,
// I18n.of(Constants.getCurrentContext()).splash_tips_content1,
// Color(0xffEC527D)));


list.add(SplashBean(
'assets/images/img_splash_4.png',
I18n.of(Constants.getCurrentContext()).translation_butler,
I18n.of(Constants.getCurrentContext()).splash_tips_content4,
Color(0xFF2B79F7)));

list.add(SplashBean(
'assets/images/img_splash_1.png',
I18n.of(Constants.getCurrentContext()).splash_tips1,
I18n.of(Constants.getCurrentContext()).splash_tips_content1,
Color(0xffEC527D)));
'assets/images/img_splash_5.png',
I18n.of(Constants.getCurrentContext()).travel_butler,
I18n.of(Constants.getCurrentContext()).splash_tips_content5,
Color(0xFFBE58FF)));


list.add(SplashBean(
'assets/images/img_splash_2.png',
I18n.of(Constants.getCurrentContext()).splash_tips2,
@@ -78,8 +93,8 @@ class SplashPageState extends State<SplashPage> {
child: Column(
children: <Widget>[
Expanded(child: Container()),
currentIndex != 2 ? getIndicator() : Container(),
currentIndex == 2
currentIndex != 3 ? getIndicator() : Container(),
currentIndex == 3
? InkWell(
onTap: () async {
await SPUtils.saveBool(


+ 4
- 0
lib/r.dart 查看文件

@@ -121,6 +121,8 @@ class R {
static final String assetsImagesImgTranslationYesP = 'assets/images/img_translation_yes_p.png';
/// ![](http://127.0.0.1:3132/assets/images/daily_coin.png)
static final String assetsImagesDailyCoin = 'assets/images/daily_coin.png';
/// ![](http://127.0.0.1:3132/assets/images/img_splash_5.png)
static final String assetsImagesImgSplash5 = 'assets/images/img_splash_5.png';
/// ![](http://127.0.0.1:3132/assets/images/ic_new_friend.png)
static final String assetsImagesIcNewFriend = 'assets/images/ic_new_friend.png';
/// ![](http://127.0.0.1:3132/assets/images/ic_settings.png)
@@ -135,6 +137,8 @@ class R {
static final String assetsImagesRobot = 'assets/images/robot.jpg';
/// ![](http://127.0.0.1:3132/assets/images/ext_sound.png)
static final String assetsImagesExtSound = 'assets/images/ext_sound.png';
/// ![](http://127.0.0.1:3132/assets/images/img_splash_4.png)
static final String assetsImagesImgSplash4 = 'assets/images/img_splash_4.png';
/// ![](http://127.0.0.1:3132/assets/images/ext_zip.png)
static final String assetsImagesExtZip = 'assets/images/ext_zip.png';
/// ![](http://127.0.0.1:3132/assets/images/chat_item_1.png)


+ 1
- 1
lib/utils/HttpUtil.dart 查看文件

@@ -156,7 +156,7 @@ class HttpUtil {
cancelToken,
bool isShowLoading = false,
failback}) async {
print('post请求启动! url:$url ,body: $data');
// print('post请求启动! url:$url ,body: $data');
Response response;
if (isShowLoading) LoadingManage().showLoading();
try {


+ 0
- 1
lib/utils/NetUtil.dart 查看文件

@@ -118,7 +118,6 @@ class NetWork {
onData(dynamic message) {
//任何一条消息都作为心跳包处理
receiveHeart();
if (message is String) {
print(message);
} else if (message is Uint8List) {


+ 1
- 1
lib/utils/file_cache_mgr.dart 查看文件

@@ -36,7 +36,7 @@ class FileCacheMgr {
Future<File> writeFile(String fileId, fileBytes) async {
var path = p.join(await getFilePath(), fileId);
print('receive path : $path');
// print('receive path : $path');
var folder = new File(path).parent;
if (!(await folder.exists())) {
folder.createSync(recursive: true);


+ 1
- 1
lib/utils/image_util.dart 查看文件

@@ -178,7 +178,7 @@ class WidgetUtil {
}
if (model.image != null && model.image.length > 2) {
print('${model.name} 群头像地址:${model.image}');
// print('${model.name} 群头像地址:${model.image}');
File file = new File(model.image);


+ 50
- 30
lib/utils/msgHandler.dart 查看文件

@@ -18,6 +18,7 @@ import 'package:chat/utils/blacklist_mgr.dart';
import 'package:chat/utils/friend_list_mgr.dart';
import 'package:chat/utils/group_member_model.dart';
import 'package:chat/utils/local_notification_util.dart';
import 'package:chat/utils/screen.dart';
import 'package:chat/utils/sound_util.dart';
import 'package:chat/utils/sql_util.dart';
import 'package:chat/utils/upload_util.dart';
@@ -315,6 +316,8 @@ class MsgHandler {
}
MessageMgr().emit('Update Translate Message', findMsg);
}else{
debugPrint2('更新消息找不到!!!!!!');
}
} else {
if (chat.sendUserId == 0) {
@@ -579,11 +582,11 @@ class MsgHandler {
}
if (msgModel == null) {
print('消息为空,无法保存');
debugPrint2('消息为空,无法保存');
return;
}
print(
'收到消息,准备保存 会话Id:${msgModel.sessionId} friendId: ${msgModel.friendId} ChatType: ${msgModel.channelType}');
debugPrint2('收到消息,准备保存 会话Id:${msgModel.sessionId} friendId: ${msgModel.friendId} ChatType: ${msgModel.channelType}');
// showToast('收到消息,准备保存 会话Id:${msgModel.sessionId} friendId: ${msgModel.friendId} ChatType: ${msgModel.channelType}');
ChatDataMgr().saveMsg(msgModel);
if (msgModel.msgType == ChatType.ShortVoiceChatType.value) {
//如果是语音消息,自动下载
@@ -813,7 +816,7 @@ class MsgHandler {
static _getUserName(int uId, List<GroupMemberModel> members) {
for (var uItem in members) {
if (uItem.memberId == uId) {
print('用户$uId 的名字 是 ${uItem.refName}');
// print('用户$uId 的名字 是 ${uItem.refName}');
return uItem.refName;
}
}
@@ -827,6 +830,9 @@ class MsgHandler {
ChatDataMgr().updateRecordWithUnreadMsg(noticeList);
}
static int msgCount=0;
static handlerServerMsg(int comId, int msgId, List<int> content) {
switch (comId) {
case ComId.Chat:
@@ -876,13 +882,13 @@ class MsgHandler {
}
}
} else if (msgId == 3) {
print('收到聊天消息');
msgCount++;
debugPrint2('#################################收到聊天消息$msgCount');
var msgContent = PushChat.fromBuffer(content);
print('收到聊天消息BBBBB');
ackServerMsg(msgContent.sendTime);
handlerReceiveMsg(msgContent);
} else if (msgId == 4) {
print('处理未读消息汇总');
debugPrint2('#################################收到聊天消息处理未读消息汇总');
handlerUnreadMsg(content);
} else if (msgId == 9) {
print('切换人工翻译状态通知');
@@ -1273,7 +1279,7 @@ class MsgHandler {
static sendCreateTranslateOrder(int fromLanguage,int toLanguage,int scences,String extraDesc) {
TranslateHKMgr().isUser=true;
debugPrint('发布翻译管家帮助订单 fromLanguage:$fromLanguage toLanguage: $toLanguage | ${fromLanguage|toLanguage}' );
debugPrint2('发布翻译管家帮助订单 fromLanguage:$fromLanguage toLanguage: $toLanguage | ${fromLanguage|toLanguage}' );
var seq = IssueTransHKOrderReq.create();
seq.tLanguage = fromLanguage | toLanguage;
seq.scenes = scences;
@@ -1283,7 +1289,7 @@ class MsgHandler {
//发布翻译管家帮助订单回应
static handlerCreateTranslateOrder(List<int> msgContent) {
debugPrint('发布翻译管家帮助订单回应');
debugPrint2('发布翻译管家帮助订单回应');
// LoadingManage().closeLoading();
var res = IssueTransHKOrderRes.fromBuffer(msgContent);
if (res.errorCode == 0) {
@@ -1292,9 +1298,23 @@ class MsgHandler {
TranslateHKMgr().orderStatus = TranslateHKMgr.ORDER_STATUS_WAITING;
MessageMgr().emit(MessageMgr.TRANSLATE_HK_REFRESH_ORDER);
// GroupInfoMgr().updateMemberMsgFree(res.groupId, res.messageFree);
debugPrint('发布翻译管家帮助订单回应-订单号: ${res.orderId} 等待人数 ${res.waitNum}');
debugPrint2('发布翻译管家帮助订单回应-订单号: ${res.orderId} 等待人数 ${res.waitNum}');
} else {
debugPrint('发布翻译管家帮助订单失败 ${res.errorCode}');
debugPrint2('发布翻译管家帮助订单失败 ${res.errorCode}');
String errorStr=I18n.of(context).translation_butler_order_failed;
switch(res.errorCode){
case 5014:
errorStr=I18n.of(context).translation_butler_order_failed2;
break;
case 5015:
errorStr=I18n.of(context).not_enough;
break;
}
showToast('$errorStr -${res.errorCode}',duration: Duration(seconds: 3));
TranslateHKMgr().orderStatus = TranslateHKMgr.ORDER_STATUS_EMPTY;
MessageMgr().emit(MessageMgr.TRANSLATE_HK_REFRESH_ORDER);
}
}
@@ -1304,7 +1324,7 @@ class MsgHandler {
//翻译官开启/关闭接收订单
static translateReceiptOrStopOrder(bool isReceipt) {
debugPrint('翻译官开启/关闭接收订单 请求 $isReceipt' );
debugPrint2('翻译官开启/关闭接收订单 请求 $isReceipt' );
var seq = TransHKInterSetIsReceiptReq.create();
seq.isReceipt = isReceipt;
@@ -1313,21 +1333,21 @@ class MsgHandler {
//
static handlerTransHKInterSetIsReceiptRes(List<int> msgContent) {
debugPrint('翻译官开启/关闭接收订单 回应');
debugPrint2('翻译官开启/关闭接收订单 回应');
var res = TransHKInterSetIsReceiptRes.fromBuffer(msgContent);
if (res.errorCode == 0) {
MessageMgr().emit(MessageMgr.TRANSLATE_HK_IS_RECEIVED_ORDER,res.isReceipt);
debugPrint('翻译官开启/关闭接收订单 回应成功: ${res.isReceipt}');
debugPrint2('翻译官开启/关闭接收订单 回应成功: ${res.isReceipt}');
} else {
debugPrint('翻译官开启/关闭接收订单 失败${res.errorCode}');
debugPrint2('翻译官开启/关闭接收订单 失败${res.errorCode}');
}
}
//撤销订单消息
static sendCancelTranslateOrder() {
debugPrint('取消订单 orderid:${TranslateHKMgr().orderId}');
debugPrint2('取消订单 orderid:${TranslateHKMgr().orderId}');
var seq = CancellationTransHKOrderReq.create();
seq.orderId = TranslateHKMgr().orderId;
@@ -1336,18 +1356,18 @@ class MsgHandler {
//撤销订单消息回应
static handlerCancelTranslateOrder(List<int> msgContent) {
debugPrint('撤销订单消息回应');
debugPrint2('撤销订单消息回应');
var res = CancellationTransHKOrderRes.fromBuffer(msgContent);
if (res.errorCode == 0) {
debugPrint('撤销订单消息回应成功: ${res.orderId}');
debugPrint2('撤销订单消息回应成功: ${res.orderId}');
} else {
debugPrint('撤销订单消息回应成功失败${res.errorCode}');
debugPrint2('撤销订单消息回应成功失败${res.errorCode}');
}
}
//派送订单推送
static handlerDeliveryInterpreterOrderPush(List<int> msgContent) {
debugPrint('派送订单推送');
debugPrint2('派送订单推送');
var res = DeliveryTransHKOrderPush.fromBuffer(msgContent);
print(
'OrderId: ${res.orderId} createTime: ${res.createTime} tLanguage:${res.tLanguage} scenes:${res.scenes} desc${res.desc}');
@@ -1368,12 +1388,12 @@ class MsgHandler {
static handlerCancellationTransHKOrderPush(List<int> msgContent) {
var res = CancellationTransHKOrderPush.fromBuffer(msgContent);
debugPrint('派送订单已被取消: orderId${res.orderId}');
debugPrint2('派送订单已被取消: orderId${res.orderId}');
// print('OrderId: ${res.orderId} createTime: ${res.createTime} tLanguage:${res.tLanguage} scenes:${res.scenes} desc${res.desc}');
TranslateHKMgr().order = null;
MessageMgr().emit(MessageMgr.TRANSLATE_HK_CANCEL_ORDER);
showToast(I18n.of(context).translation_butler_order_time_out);
showToast(I18n.of(context).translation_butler_order_time_out,duration: Duration(seconds: 3));
}
@@ -1381,7 +1401,7 @@ class MsgHandler {
//接收订单请求
static sendReceiveOrder() {
TranslateOrder order = TranslateHKMgr().order;
debugPrint('接收订单消息请求 orderId:${order.orderId}');
debugPrint2('接收订单消息请求 orderId:${order.orderId}');
var seq = ReceivingTransHKOrderReq.create();
seq.orderId = order.orderId;
@@ -1390,13 +1410,13 @@ class MsgHandler {
//接收订单消息回应
static handlerReceiveOrder(List<int> msgContent) {
debugPrint('接收订单消息回应');
debugPrint2('接收订单消息回应');
var res = ReceivingTransHKOrderRes.fromBuffer(msgContent);
if (res.errorCode == 0) {
// GroupInfoMgr().updateMemberMsgFree(res.groupId, res.messageFree);
debugPrint('接收订单消息回应成功: ');
debugPrint2('接收订单消息回应成功: ');
} else {
debugPrint('接收订单消息回应失败${res.errorCode}');
debugPrint2('接收订单消息回应失败${res.errorCode}');
}
}
@@ -1406,7 +1426,7 @@ class MsgHandler {
//用户主动结束翻译管家服务
static sendEndTransHKOrderReq() {
debugPrint('用户主动结束翻译管家服务 ${TranslateHKMgr().orderId}' );
debugPrint2('用户主动结束翻译管家服务 ${TranslateHKMgr().orderId}' );
var seq = EndTransHKOrderReq.create();
seq.orderId = TranslateHKMgr().orderId;
NetWork().sendMsg(ComId.TranslateOrder, 7, seq);
@@ -1414,14 +1434,14 @@ class MsgHandler {
//用户主动结束翻译管家服务回应
static handlerEndTransHKOrderRes(List<int> msgContent) {
debugPrint('用户主动结束翻译管家服务');
debugPrint2('用户主动结束翻译管家服务');
var res = EndTransHKOrderRes.fromBuffer(msgContent);
if (res.errorCode == 0) {
// GroupInfoMgr().updateMemberMsgFree(res.groupId, res.messageFree);
debugPrint('用户主动结束翻译管家服务 成功: ');
debugPrint2('用户主动结束翻译管家服务 成功: ');
} else {
debugPrint('用户主动结束翻译管家服务 失败${res.errorCode}');
debugPrint2('用户主动结束翻译管家服务 失败${res.errorCode}');
}
}


+ 4
- 0
lib/utils/screen.dart 查看文件

@@ -96,3 +96,7 @@ setStatusBar(){
debugPrint(dynamic msg){
print('###${DateTime.now()}####### '+msg);
}
debugPrint2(dynamic msg){
print('###${DateTime.now()}####### '+msg);
}

+ 2
- 0
pubspec.yaml 查看文件

@@ -265,6 +265,7 @@ flutter:
- assets/images/img_splash_1.png
- assets/images/img_translation_yes_p.png
- assets/images/daily_coin.png
- assets/images/img_splash_5.png
- assets/images/ic_new_friend.png
- assets/images/ic_settings.png
- assets/images/ic_cards_wallet.png
@@ -272,6 +273,7 @@ flutter:
- assets/images/chat_item_3.png
- assets/images/robot.jpg
- assets/images/ext_sound.png
- assets/images/img_splash_4.png
- assets/images/ext_zip.png
- assets/images/chat_item_1.png
- assets/images/img_temp_qd.png


Loading…
取消
儲存