Ver a proveniência

修改bug ( 完成100%)

1.在韩语下当前城市出现中文,好友界面没有红点提示
2.:越南语情况下,信息超长显示不全,新图标与对应功能字体没对齐
3.签到界面越南语情况下文字稍微偏出,备注修改界面默认设置文字错误;

韩语和越南语部分文字替换(100%)
master
ZCM há 5 anos
ascendente
cometimento
1ae08d178d
19 ficheiros alterados com 578 adições e 1287 eliminações
  1. +38
    -38
      i18n/ko-KR.json
  2. +51
    -51
      i18n/vi-VN.json
  3. +160
    -136
      lib/chat/ChatPage.dart
  4. +9
    -11
      lib/chat/ChatPageItem.dart
  5. +9
    -11
      lib/chat/group_chat_item.dart
  6. +1
    -2
      lib/chat/input_bar.dart
  7. +30
    -782
      lib/data/WebData.dart
  8. +178
    -178
      lib/generated/i18n.dart
  9. +4
    -3
      lib/home/ProfilePage.dart
  10. +18
    -11
      lib/home/VerificationCenter.dart
  11. +16
    -29
      lib/home/VipPage.dart
  12. +3
    -1
      lib/home/add_friend.dart
  13. +27
    -7
      lib/home/coin_anim.dart
  14. +1
    -0
      lib/home/friend_page.dart
  15. +6
    -2
      lib/home/photo_page.dart
  16. +0
    -4
      lib/home/realtimehelper/translation_order_push_dialog.dart
  17. +1
    -1
      lib/models/ChatMsg.dart
  18. +24
    -19
      lib/utils/CustomUI.dart
  19. +2
    -1
      lib/utils/FullWithButton.dart

+ 38
- 38
i18n/ko-KR.json Ver ficheiro

@@ -508,7 +508,7 @@
"upload_photos": "사진을 올리다",
"upload_video": "영상을 올리다",
"upload": "사진 업로드",
"set_photo": "빨간 봉투 사진을 설치하다",
"set_photo": "빨간 패킷 사진 설치 하기",
"photo_order": "화면을 누르고 끌면 사진을 정렬할 수 있다",
"my_evaluation": "나의 평가 ",
"my_show": "나의프로그램",
@@ -1220,41 +1220,41 @@
"translation_more_desc": "더 많은 묘사",
"feedback_assistant": " 피드백 팁",
"feedback_tips": "어떤 문제라도 피드백해 주세요.",
"man_retranslate": "人工重译",
"robot_retranslate": "机器重译",
"see_original": "查看原文",
"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": "翻译订单超时已被取消",
"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": "无忧你的旅行",
"shock_notice": "震动通知",
"max_upload_size": "最多上传/s1张",
"travel_tips2": "您的贴身出行管家,解决语言不通打车走错路的问题",
"new_friends_tips": "现在我们可以开始聊天了。",
"msg_tips": "填写自我简介获得更多关注,在此处填写",
"new_msg": "/s1条新消息",
"upload1": "上传",
"his_profile": "他的资料",
"her_profile": "她的资料"
"man_retranslate": "인공 새로 번역",
"robot_retranslate": "로봇 새로 번역",
"see_original": "원문 보기",
"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": "번역 주문이 시간 초과로 취소되었습니다.",
"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": "당신의 고민 없은 여행.",
"shock_notice": "진동 알림",
"max_upload_size": "최대 업로드/s1장",
"travel_tips2": "당신의 밀착 출장 집사가는 말이 통하지 않고 택시를 타고 길을 잘못 드는 문제를 해결합니다. ",
"new_friends_tips": "이제 우리 채팅 시작할 수 있습니다.",
"msg_tips": " 프로필을 작성하여 더 많은 관심을 얻고 여기에 기입하세요.",
"new_msg": "/s1건 새 채팅",
"upload1": "업로드",
"his_profile": "그의 자료",
"her_profile": "그녀의 자료"
}

+ 51
- 51
i18n/vi-VN.json Ver ficheiro

@@ -77,9 +77,9 @@
"member_centre": "Trung tâm thành viên",
"members_privilege": "Đặc quyền của thành viên",
"see_more": "Right 1",
"unlimited_see": "Tài khoản không giới hạn số lượng xem mỗi ngày",
"unlimited_see": "Tài khoản không giới hạn số lượng xem mỗi ngày.",
"see_cheaper": "Right 2",
"free10": "Xem album và tài khoản miễn phí /s1 lần trong một ngày",
"free10": "Xem album và tài khoản miễn phí /s1 lần trong một ngày.",
"see_longer": "Right 3",
"towto6": "Thời gian xem ảnh tự hủy sẽ chỉnh từ 2 giây thành /s1 giây.",
"see_better": "Right 4",
@@ -278,7 +278,7 @@
"select_program": "Vui lòng chọn quốc tịch",
"healthy_exercise": "TDTT",
"night_party": "Tiệc tùng",
"gourmet_party": "Tham ăn",
"gourmet_party": "Ăn uống",
"watch_movie": "Xem phim",
"play_games": "Chơi game",
"travel_together": "Du lịch",
@@ -339,7 +339,7 @@
"me": "Tôi",
"more_operations": "Các thao tác khác",
"anonymous_report": "Báo cáo ẩn danh",
"certified_video": "Video",
"certified_video": "Video xác thực",
"passed_video": "Em ấy đã được xác thực danh tính qua video",
"not_video": "Em ấy vẫn chưa xác thực danh tính",
"her_appointment": "Em ấy đang phát tin hẹn hò",
@@ -410,7 +410,7 @@
"enter_account": "Nhập số tài khoản mạng xã hội của bạn",
"for_example": "Tài khoản Wechat abc",
"sent_she": "Gửi cho em ấy",
"chat": "Liên mic",
"chat": "Gọi thoại",
"cantt_voice": "Đối phương đã tắt chức năng trò chuyện trực tuyến",
"authentication_voice": "Sau khi tính xác thực của bạn được chứng nhận, bạn mới có thể trò chuyện trực tuyến",
"requesting_voice": "Đang yêu cầu kết nối trò chuyện trực tuyến",
@@ -419,7 +419,7 @@
"hang_up": "Ngắt kết nối",
"chatting": "Đang trò chuyện trực tuyên",
"handsfree": "Chế độ loa ngoài",
"giving_gift": "Thưởng",
"giving_gift": "Tặng quà",
"give_success": "Thưởng thành công",
"others_gift": "Đối phương đã tặng quà",
"given_gift": "Bạn đã thưởng cho đối phương một món quà trị giá /s1",
@@ -647,7 +647,7 @@
"successfully_released": "Đăng bài thành công",
"no_program": "Bạn vẫn chưa đăng chương trình nào",
"program_details": "Chi tiết chương trình",
"program_theme": "Chủ đề chương trình",
"program_theme": "Chủ đề CT",
"click_select": "Nhấn vào đây để chọn",
"city": "Thành phố",
"select_city": "Chọn thành phố",
@@ -723,7 +723,7 @@
"she_liar": "Em ấy là một kẻ lừa đảo",
"he_liar": "Anh ấy là một kẻ lừa đảo",
"provide_screenshots": "Xin cung cấp ảnh chụp màn hình liên quan để chúng tôi theo dõi xác thực",
"describe_details": "Vui lòng mô tả chi tiết(trong vòng 100 ký tự)",
"describe_details": "Vui lòng mô tả chi tiết (trong vòng 100 ký tự)",
"report_reason": "Vui lòng chọn lý do báo cáo",
"report_success2": "Báo cáo thành công",
"successfully_modified": "Đã sửa đổi thành công",
@@ -822,8 +822,8 @@
"buy_program": "Bạn đã tiêu thụ /s1 H tệ để đăng hoạt động.",
"del_add_money": "Yêu cầu rút tiền H của bạn đã được xử lý và chuyển /s1 vào tài khoản của bạn, vui lòng kiểm tra!",
"adding_money": "Yêu cầu rút tiền /s1 H của bạn đang được xét duyệt.",
"free_translate": "miễn phí hưởng nhân viên dịch thuật kịp thời",
"personalTraff": "Nhân viên CSKH vì bạn phục vụ",
"free_translate": "miễn phí hưởng nhân viên dịch thuật kịp thời.",
"personalTraff": "Nhân viên CSKH vì bạn phục vụ.",
"ManTranslate": "Người dịch đang dịch...",
"robotTranslate": "Máy đang dịch...",
"translated": "Người dịch đã hoàn thành",
@@ -831,9 +831,9 @@
"open_location": "Quyền định vị chưa được bật",
"get_location": "Vui lòng bật quyền định vị trong cài đặt điện thoại của bạn để biết khoảng cách người khác.",
"confirm_exit": "Nhấn lần nữa để thoát",
"free_program": "Cơ hội miễn phí phát sóng /s1 /ngày ",
"free_program": "Cơ hội miễn phí phát sóng /s1 /ngày.",
"picture": "Hình ảnh",
"camera": "Máy ảnh",
"camera": "Chụp ảnh",
"video": "Video",
"red_money": "Tiền lì xì",
"stick": "Dán",
@@ -991,9 +991,9 @@
"server_error_tips": "Có vẻ đã xảy ra lỗi ...",
"emoji": "icon",
"today_score": "Báo danh trong ngày để nhận /s1 điểm tích lũy",
"sign_tips": "1. Báo danh hàng ngày để tích lũy điểm, số ngày tích lũy càng nhiều điêm tích lũy càng cao. \n2. Điểm tích lũy có thể đổi thành H coin, khi đổi sẽ tiêu hao điểm tích lũy tương đương, hãy thận trọng khi đổi. \n3.Báo danh sẽ được đặt lại vào ngày cuối cùng của tháng, xóa điểm tích lũy. Hãy kịp thời đổi điểm tích lũy nhé!",
"sign_tips": "1. Báo danh hàng ngày để tích lũy điểm, số ngày tích lũy càng nhiều điêm tích lũy càng cao. \n2. Điểm tích lũy có thể đổi thành H coin, khi đổi sẽ tiêu hao điểm tích lũy tương đương, hãy thận trọng khi đổi. \n3. Báo danh sẽ được đặt lại vào ngày cuối cùng của tháng, xóa điểm tích lũy. Hãy kịp thời đổi điểm tích lũy nhé!",
"sign_in": "Báo danh",
"my_score": "Điểm tích lũy của tôi",
"my_score": "Điểm tích lũy",
"signin_now": "Báo danh ngay",
"sign_in_day": "Tích lũy báo danh /s1 ngày",
"have_get": "Đã hối đổi",
@@ -1220,41 +1220,41 @@
"translation_more_desc": "Mô tả thêm ",
"feedback_assistant": "Trợ giúp phản hồi",
"feedback_tips": "Nếu gặp phải vấn đề bạn có thể phản hồi với chúng tôi!",
"man_retranslate": "人工重译",
"robot_retranslate": "机器重译",
"see_original": "查看原文",
"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": "翻译订单超时已被取消",
"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": "无忧你的旅行",
"shock_notice": "震动通知",
"max_upload_size": "最多上传/s1张",
"travel_tips2": "您的贴身出行管家,解决语言不通打车走错路的问题",
"new_friends_tips": "现在我们可以开始聊天了。",
"msg_tips": "填写自我简介获得更多关注,在此处填写",
"new_msg": "/s1条新消息",
"upload1": "上传",
"his_profile": "他的资料",
"her_profile": "她的资料"
"man_retranslate": " Người dịch lại",
"robot_retranslate": " Robot dịch lại",
"see_original": " Xem bản gốc ",
"forward": " Chia sẻ",
"copy_download_url": " Copy link tải",
"total_friends_nus": " Tổng có /s1 bạn bè chung ",
"hava_error_photo": " Có ảnh vi phạm quy định",
"translation_butler_evaluation_tips2": " Dịch vụ dịch thuật đã kết thúc và bạn đã làm việc vất vả rồi. Vui lòng luôn ở trạng thái online, chú ý thông báo đơn hàng mới",
"translation_butler_push_order_time": " Thời gian: Hôm nay /s1 Tổng thời gian: ",
"translation_butler_push_order_time2": " Thời gian đặt hàng: hôm nay /s1 Tổng thời gian chờ:",
"translation_butler_title3": " Đại thần chuyên quyền ",
"translation_butler_start_receive_order": " Bắt đầu bật chế độ tiếp nhận đơn",
"translation_butler_stop_receive_order": " Chưa bật chế độ tiếp nhận đơn",
"translation_butler_stop_tips": " Người phiên dịch không thể nhập tạo dịch vụ",
"translation_butler_scenes2": " Tình cảnh:",
"translation_butler_last_item_start": "[Bắt đầu dịch vụ phiên dịch]",
"translation_butler_last_item_end": "[Kết thúc dịch vụ phiên dịch]",
"travel_start": " Điểm bắt đầu ",
"travel_end": " Điểm kết thúc ",
"translation_butler_order_time_out": " Dịch vụ phiên dịch hết giờ đã bị hủy ",
"translation_butler_order_close_tips": " Khi dịch vụ phiên dịch chưa kết thúc, người dịch không thể chủ động kết thúc",
"translation_butler_order_close_tips2": " Bạn có phải muốn kết thúc dịch vụ dịch thuật?",
"translation_butler_order_failed": " Đơn hàng gửi thất bại ",
"translation_butler_order_failed2": " Yêu cầu dịch vụ thất bại, mạng bất thường ",
"translation_butler_introduction": " Bạn đang lo lắng đối phương nghe không hiểu bạn nói gì sao? Mời bạn chọn ngôn ngữ bạn cần dịch,bạn hãy nói lại vấn đề bạn gặp phải,trợ lý dịch thuật sẽ phục vụ bạn mọi lúc mọi nơi ",
"travel_introduction": " Có phải cách đích càng ngày càng xa tốt? Chọn điểm bắt đầu và điểm kết thúc của bạn, để trợ lý chỉ đường giúp bạn đo khoảng cách chính xác",
"splash_tips_content4": " Để chỉ đưởng và giao tiếp đơn giản hơn",
"splash_tips_content5": " Vô ưu du lịch của bạn",
"shock_notice": " Thông báo rung ",
"max_upload_size": " Tải lên tối đa /s1 ảnh ",
"travel_tips2": " Trợ lý chỉ đường giúp bạn giải quyết vấn đề về ngôn ngữ, gọi xe ,đi sai đường ",
"new_friends_tips": " Bây giờ chúng ta có thể bắt đầu trò chuyện rồi!",
"msg_tips": " Điền vào thông tin của bạn để được theo dõi nhiều hơn,xin điền vào đây",
"new_msg": "/s1 tin nhắn mới ",
"upload1": " Tải lên ",
"his_profile": " Thông tin của anh ấy ",
"her_profile": " Thông tin của chị ấy "
}

+ 160
- 136
lib/chat/ChatPage.dart Ver ficheiro

@@ -2,6 +2,7 @@ import 'dart:convert';
import 'dart:io';
import 'package:chat/data/translate_hk_data_mgr.dart';
import 'package:chat/home/audio_chat_view.dart';
import 'package:chat/home/coin_anim.dart';
import 'package:chat/utils/screen.dart';
import 'package:chat/utils/upload_util.dart';
import 'package:fixnum/fixnum.dart';
@@ -48,8 +49,7 @@ import 'package:chat/utils/PopUpMenu.dart' as myPop;
import 'package:chat/models/money_change.dart';
class ChatPage extends StatefulWidget {
static bool isChatPageActive=false;
static bool isChatPageActive = false;
final int friendId;
final int enterType; // 0默认 1图片
@@ -83,13 +83,17 @@ class _ChatPageState extends State<ChatPage> {
bool isTranslateButler;
bool isTranslateButlerFinish=false;///翻译管家是否已经结束
bool isTranslateButlerFinish = false;
///翻译管家是否已经结束
int jumpTime;
AutoScrollController controller;
bool hasChatPermission=false;
bool hasChatPermission = false;
bool isPlayCoinAnim = false;
@override
void dispose() {
@@ -107,7 +111,7 @@ class _ChatPageState extends State<ChatPage> {
SoundUtils().stop();
nickNameController.dispose();
super.dispose();
ChatPage.isChatPageActive =false;
ChatPage.isChatPageActive = false;
}
jumpToMsg(time) async {
@@ -136,7 +140,7 @@ class _ChatPageState extends State<ChatPage> {
void initState() {
super.initState();
print('init chatpage');
ChatPage.isChatPageActive=true;
ChatPage.isChatPageActive = true;
getDefaultSetting();
getUserInfo();
@@ -145,6 +149,7 @@ class _ChatPageState extends State<ChatPage> {
Rect.fromLTRB(0, 0, 0, MediaQuery.of(context).padding.bottom),
axis: Axis.vertical);
isTranslateButler = widget.isTranslateButler;
///todo 这里再判断是否还在服务时间
startTime = DateTime.now().millisecondsSinceEpoch ~/ 1000;
@@ -158,69 +163,63 @@ class _ChatPageState extends State<ChatPage> {
msgMgr.on(MessageMgr.TRANSLATE_HK_END_CHAT, translateHKChatEnd);
msgMgr.on('Jump to Msg', jumpToMsg);
WidgetsBinding.instance.addPostFrameCallback((_) {
checkPermission();
});
}
checkPermission()async{
if(isTranslateButler){
checkPermission() async {
if (isTranslateButler) {
if (await CustomUI.showPermissionSetting(context,
PermissionGroup.microphone, I18n.of(context).video_permission)) {
setState(() {
hasChatPermission=true;
dx=Screen.width - zoomButtonSizeWidth;
dy = (Screen.height - zoomButtonSizeHeight)/2;
hasChatPermission = true;
dx = Screen.width - zoomButtonSizeWidth;
dy = (Screen.height - zoomButtonSizeHeight) / 2;
});
} else {
hasChatPermission=false;
hasChatPermission = false;
showToast(I18n.of(context).need_record);
}
}
}
translateHKChatEnd(args){
translateHKChatEnd(args) {
setState(() {
isShowZoomButton=false;
isTranslateButlerFinish=true;
TranslateHKMgr().order=null;
isShowZoomButton = false;
isTranslateButlerFinish = true;
TranslateHKMgr().order = null;
});
if (!UserData().isTranslateUser) {
var cancle = InkWell(
onTap: () {
Navigator.pop(context);
},
child: Container(
decoration: BoxDecoration(
color: const Color(0XFFC7E5FF),
borderRadius: BorderRadius.all(
Radius.circular(Constants.LittleButtonRadius))),
margin: EdgeInsets.only(top: 0, bottom: 18.5),
height: 37.5,
width: 200,
alignment: Alignment.center,
child: CountDownButton(
I18n.of(context).cancel,
() {
Navigator.of(context).pop();
},
isOnlyRichText: true,
countDownTime: 10,
)),
);
if(!UserData().isTranslateUser){
var cancle = InkWell(onTap: (){Navigator.pop(context);},child: Container(
decoration: BoxDecoration(
color: const Color(0XFFC7E5FF),
borderRadius: BorderRadius.all(
Radius.circular(Constants.LittleButtonRadius))),
margin: EdgeInsets.only(top: 0, bottom: 18.5),
height: 37.5,
width: 200,
alignment: Alignment.center,
child: CountDownButton(I18n.of(context).cancel, (){Navigator.of(context).pop();},isOnlyRichText: true,countDownTime: 10,)),);
CustomUI.buildTowConfirmWithCountDown(context, '是否再来一单', '是的', (){
CustomUI.buildTowConfirmWithCountDown(context, '是否再来一单', '是的', () {
MsgHandler.sendAnotherOrderReq();
Navigator.of(context).pop();
}, cancle);
}
}
void _sendFile(File file) async {
@@ -363,9 +362,6 @@ class _ChatPageState extends State<ChatPage> {
);
}
List<Widget> actions = [];
int voucher = Provider.of<VoucherChangeProvider>(context).voucher;
@@ -373,9 +369,20 @@ class _ChatPageState extends State<ChatPage> {
children: <Widget>[
CustomUI.buildImageLabel("assets/images/voucher.png", voucher,
imgOpc: 0.5, imgHeight: 13),
CustomUI.buildImageLabel(
R.assetsImagesCoin, Provider.of<MoneyChangeProvider>(context).money,
isLeft: false)
Stack(alignment: Alignment.centerLeft, children: <Widget>[
CustomUI.buildImageLabel(R.assetsImagesCoin,
Provider.of<MoneyChangeProvider>(context).money,
isLeft: false, isPlayAnim: isPlayCoinAnim),
isPlayCoinAnim
? CoinAnim(
animFinishCallback: () {
setState(() {
isPlayCoinAnim = false;
});
},
)
: Text('')
]),
],
));
actions.add(TranslateSateWidget(friendId: friendInfo.userId));
@@ -441,7 +448,6 @@ class _ChatPageState extends State<ChatPage> {
];
})));
var allItem = Stack(
children: <Widget>[
MultiProvider(
@@ -468,9 +474,9 @@ class _ChatPageState extends State<ChatPage> {
color: Constants.BlackTextColor,
fontSize: 16.47),
),
leading: CustomUI.buildCustomLeading(context,onTap:(){
leading: CustomUI.buildCustomLeading(context,
onTap: () {
goBackCheck();
}),
titleSpacing: -10,
centerTitle: false,
@@ -478,15 +484,18 @@ class _ChatPageState extends State<ChatPage> {
actions: actions),
body: SafeArea(
child: Column(
children: <Widget>[
NetStateWidget(),
(isTranslateButler)
? _buildTranslationButler()
: Container(),
Expanded(child: _buildMessageList()),
InputBar(sendMsg: sendMsg,isTranslateHK: isTranslateButler,),
],
))),
children: <Widget>[
NetStateWidget(),
(isTranslateButler)
? _buildTranslationButler()
: Container(),
Expanded(child: _buildMessageList()),
InputBar(
sendMsg: sendMsg,
isTranslateHK: isTranslateButler,
),
],
))),
behavior: HitTestBehavior.translucent,
onPointerDown: (value) {
for (var state in states) {
@@ -513,58 +522,70 @@ class _ChatPageState extends State<ChatPage> {
],
);
return isTranslateButler?WillPopScope(
child: allItem,
onWillPop: () {
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);
}):allItem;
return isTranslateButler
? WillPopScope(
child: allItem,
onWillPop: () {
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);
})
: allItem;
}
addCoin() {
setState(() {
isPlayCoinAnim = true;
});
MessageMgr().emit('addCoin');
}
goBackCheck(){
if(isTranslateButler && !isTranslateButlerFinish){
if(UserData().isTranslateUser){
goBackCheck() {
if (isTranslateButler && !isTranslateButlerFinish) {
if (UserData().isTranslateUser) {
showToast('翻译服务未结束不能主动结束');
}else{
} else {
CustomUI.buildTowConfirm(
context,
'是否提前结束翻译管家服务?',
I18n.of(context).confirm,
(){
() {
setState(() {
isTranslateButlerFinish=true;
isTranslateButlerFinish = true;
});
MsgHandler.sendEndTransHKOrderReq();
Navigator.of(context).pop();
},
I18n.of(context).cancel,
(){ Navigator.of(context).pop();});
() {
Navigator.of(context).pop();
});
}
}else{
} else {
Navigator.of(context).pop();
}
}
@@ -576,15 +597,15 @@ class _ChatPageState extends State<ChatPage> {
return isActive
? Offstage(
offstage: !isShowAudio,
child: AudioChatPage(
userInfo: friendInfo,
isTranslateButler: true,
isReplay: !TranslateHKMgr().isUser,
translateButlerCloseCallBack: audioChatPageCallBack,
),
):Container()
;
offstage: !isShowAudio,
child: AudioChatPage(
userInfo: friendInfo,
isTranslateButler: true,
isReplay: !TranslateHKMgr().isUser,
translateButlerCloseCallBack: audioChatPageCallBack,
),
)
: Container();
}
audioChatPageCallBack(int args) {
@@ -612,7 +633,7 @@ class _ChatPageState extends State<ChatPage> {
bool isShowZoomButton = true;
GlobalKey mykey = GlobalKey();
double dx = 0 , dy = 0;
double dx = 0, dy = 0;
double zoomButtonSizeWidth = 60;
double zoomButtonSizeHeight = 74;
@@ -640,33 +661,36 @@ class _ChatPageState extends State<ChatPage> {
}
Widget zoomAudioButton() {
if (friendInfo == null || !isShowZoomButton || !hasChatPermission) {
return Container();
}
Widget button = Container(
Widget button = Container(
key: mykey,
width: zoomButtonSizeWidth,
height: zoomButtonSizeHeight,
child: Card(child: Align(child: Icon(
IconData(0xe67d, fontFamily: Constants.IconFontFamily),
color: Color(0xFF008AFF),
size: 35.0,
),alignment: Alignment.center,),),
child: Card(
child: Align(
child: Icon(
IconData(0xe67d, fontFamily: Constants.IconFontFamily),
color: Color(0xFF008AFF),
size: 35.0,
),
alignment: Alignment.center,
),
),
);
return GestureDetector(
onHorizontalDragUpdate: dragEvent,
onVerticalDragUpdate: dragEvent,
onTap: (){
onTap: () {
setState(() {
isShowAudio = !isShowAudio;
isShowZoomButton = !isShowZoomButton;
});
},
child: Container(
child: Transform.translate(
offset: Offset(dx, dy),
child: Align(
@@ -739,31 +763,31 @@ class _ChatPageState extends State<ChatPage> {
constraints: BoxConstraints(maxWidth: 135),
),
),
(TranslateHKMgr().isUser&& !isTranslateButlerFinish)?Expanded(
child: Container(
constraints: BoxConstraints(maxWidth: 130),
width: double.maxFinite,
child: CountDownButton(
I18n.of(context).translation_butler_end_service,
() {
(TranslateHKMgr().isUser && !isTranslateButlerFinish)
? Expanded(
child: Container(
constraints: BoxConstraints(maxWidth: 130),
width: double.maxFinite,
child: CountDownButton(
I18n.of(context).translation_butler_end_service,
() {
// Navigator.of(context).pop();
},
countDownTime: 60*5,
align: Alignment.centerRight,
onPress: () {
MsgHandler.sendEndTransHKOrderReq();
},
countDownTime: 60 * 5,
align: Alignment.centerRight,
onPress: () {
MsgHandler.sendEndTransHKOrderReq();
// Navigator.of(context).pop();
},
),
},
),
// alignment: Alignment(1,0),
)):Container(),
))
: Container(),
],
),
);
}
Widget _buildMessageList() {
return Container(
alignment: Alignment.topCenter,


+ 9
- 11
lib/chat/ChatPageItem.dart Ver ficheiro

@@ -435,17 +435,15 @@ class _ChatPageItemState extends State<ChatPageItem>
var contentWidth = _getTextWidth(textList[curTextType]);
width = min(max(contentWidth, width), maxWidth);
if (textList[curTextType] != '') {
showMsg.add(Container(
constraints: BoxConstraints(maxWidth: maxWidth, minHeight: 22),
alignment: Alignment.centerLeft,
child: extendedText(
textList[curTextType],
color: isUrl ? Colors.blue : Constants.BlackTextColor,
hideKeyboard: widget.hideKeyboard,
fontSize: FontSize,
)));
}
showMsg.add(Container(
constraints: BoxConstraints(maxWidth: maxWidth, minHeight: 22),
alignment: Alignment.centerLeft,
child: extendedText(
textList[curTextType],
color: isUrl ? Colors.blue : Constants.BlackTextColor,
hideKeyboard: widget.hideKeyboard,
fontSize: FontSize,
)));
return Container(
constraints: BoxConstraints(maxWidth: Screen.width - 120),


+ 9
- 11
lib/chat/group_chat_item.dart Ver ficheiro

@@ -399,17 +399,15 @@ class _GroupChatPageItemState extends State<GroupChatPageItem>
var contentWidth = _getTextWidth(textList[curTextType]);
width = min(max(contentWidth, width), maxWidth);
if (textList[curTextType] != '') {
showMsg.add(Container(
constraints: BoxConstraints(maxWidth: maxWidth, minHeight: 22),
alignment: Alignment.centerLeft,
child: extendedText(
textList[curTextType],
color: isUrl ? Colors.blue : Constants.BlackTextColor,
hideKeyboard: widget.hideKeyboard,
fontSize: FontSize,
)));
}
showMsg.add(Container(
constraints: BoxConstraints(maxWidth: maxWidth, minHeight: 22),
alignment: Alignment.centerLeft,
child: extendedText(
textList[curTextType],
color: isUrl ? Colors.blue : Constants.BlackTextColor,
hideKeyboard: widget.hideKeyboard,
fontSize: FontSize,
)));
return Container(
constraints: BoxConstraints(maxWidth: Screen.width - 120),


+ 1
- 2
lib/chat/input_bar.dart Ver ficheiro

@@ -143,7 +143,6 @@ class InputBarState extends State<InputBar>
print('处理引用消息');
setState(() {
_isComposingMessage = true;
showKeyBoard();
});
}
@@ -895,7 +894,7 @@ class InputBarState extends State<InputBar>
}
bool checkMessage() {
if (_textCtrl.text.length == 0 && refMsg == null) {
if (_textCtrl.text.length == 0) {
showToast(I18n.of(context).msg_not);
return false;
}


+ 30
- 782
lib/data/WebData.dart Ver ficheiro

@@ -4053,787 +4053,6 @@ var constData = [
{"Key": "Taiwan", "Value": "대만, 중국", "PageKey": 0, "List": []}
]
},
{
'program': [
{"Key": "Motion", "Value": "健康运动", "PageKey": 0, "List": []},
{"Key": "Party", "Value": "夜蒲聚会", "PageKey": 0, "List": []},
{"Key": "Foodie", "Value": "我是吃货", "PageKey": 0, "List": []},
{"Key": "Movie", "Value": "看电影", "PageKey": 0, "List": []},
{"Key": "Game", "Value": "玩游戏", "PageKey": 0, "List": []},
{"Key": "Travel", "Value": "结伴旅行", "PageKey": 0, "List": []},
{"Key": "Chat", "Value": "连麦聊天", "PageKey": 0, "List": []},
{"Key": "Other", "Value": "其他", "PageKey": 0, "List": []}
],
'lovePeople': [
{"Key": "Face", "Value": "看脸", "PageKey": 0, "List": []},
{"Key": "Interesting", "Value": "有趣", "PageKey": 0, "List": []},
{"Key": "LocalTyrant", "Value": "土豪", "PageKey": 0, "List": []},
{"Key": "Love", "Value": "关爱我", "PageKey": 0, "List": []},
{"Key": "Feel", "Value": "看感觉", "PageKey": 0, "List": []},
{"Key": "Indifferent", "Value": "无所谓", "PageKey": 0, "List": []}
],
'job': [
{
"Key": "Information",
"Value": "信息技术",
"PageKey": 0,
"List": [
{
"Key": "Information",
"Value": "通讯",
"PageKey": 0,
"ParentKey": "Information"
},
{
"Key": "Internet",
"Value": "互联网",
"PageKey": 0,
"ParentKey": "Information"
},
{
"Key": "IT",
"Value": "IT",
"PageKey": 0,
"ParentKey": "Information"
},
{
"Key": "Operate",
"Value": "电信运营",
"PageKey": 0,
"ParentKey": "Information"
},
{
"Key": "NetworkGame",
"Value": "网络游戏",
"PageKey": 0,
"ParentKey": "Information"
}
]
},
{
"Key": "Financial",
"Value": "金融保险",
"PageKey": 0,
"List": [
{
"Key": "Investment",
"Value": "投资",
"PageKey": 0,
"ParentKey": "Financial"
},
{
"Key": "StockFund",
"Value": "股票基金",
"PageKey": 0,
"ParentKey": "Financial"
},
{
"Key": "Insurance",
"Value": "保险",
"PageKey": 0,
"ParentKey": "Financial"
},
{
"Key": "Bank",
"Value": "银行",
"PageKey": 0,
"ParentKey": "Financial"
},
{
"Key": "TrustGuarantee",
"Value": "信托担保",
"PageKey": 0,
"ParentKey": "Financial"
}
]
},
{
"Key": "CommercialServices",
"Value": "商业服务",
"PageKey": 0,
"List": [
{
"Key": "Consultation",
"Value": "咨询",
"PageKey": 0,
"ParentKey": "CommercialServices"
},
{
"Key": "Individual",
"Value": "个体经营",
"PageKey": 0,
"ParentKey": "CommercialServices"
},
{
"Key": "Cosmetology",
"Value": "美容美发",
"PageKey": 0,
"ParentKey": "CommercialServices"
},
{
"Key": "Decoration",
"Value": "装修装潢",
"PageKey": 0,
"ParentKey": "CommercialServices"
},
{
"Key": "Detective",
"Value": "侦探",
"PageKey": 0,
"ParentKey": "CommercialServices"
},
{
"Key": "EstateManagement",
"Value": "物业管理",
"PageKey": 0,
"ParentKey": "CommercialServices"
},
{
"Key": "RealEstate",
"Value": "房地产",
"PageKey": 0,
"ParentKey": "CommercialServices"
},
{
"Key": "Car",
"Value": "汽车",
"PageKey": 0,
"ParentKey": "CommercialServices"
},
{
"Key": "Trade",
"Value": "贸易",
"PageKey": 0,
"ParentKey": "CommercialServices"
},
{
"Key": "LeisureTime",
"Value": "休闲娱乐",
"PageKey": 0,
"ParentKey": "CommercialServices"
},
{
"Key": "HotelCatering",
"Value": "酒店餐饮",
"PageKey": 0,
"ParentKey": "CommercialServices"
},
{
"Key": "Travel",
"Value": "旅游",
"PageKey": 0,
"ParentKey": "CommercialServices"
}
]
},
{
"Key": "Make",
"Value": "工程制造",
"PageKey": 0,
"List": [
{
"Key": "Architecture",
"Value": "建筑",
"PageKey": 0,
"ParentKey": "Make"
},
{
"Key": "CivilEngineering",
"Value": "土木工程",
"PageKey": 0,
"ParentKey": "Make"
},
{
"Key": "Mechanics",
"Value": "机械制造",
"PageKey": 0,
"ParentKey": "Make"
},
{"Key": "Energy", "Value": "能源", "PageKey": 0, "ParentKey": "Make"},
{"Key": "Clothing", "Value": "服装", "PageKey": 0, "ParentKey": "Make"},
{"Key": "Food", "Value": "食品", "PageKey": 0, "ParentKey": "Make"},
{
"Key": "Biomedicine",
"Value": "生物医学",
"PageKey": 0,
"ParentKey": "Make"
},
{
"Key": "Electronics",
"Value": "电子",
"PageKey": 0,
"ParentKey": "Make"
}
]
},
{
"Key": "Transportation",
"Value": "交通运输",
"PageKey": 0,
"List": [
{
"Key": "Aviation",
"Value": "航空",
"PageKey": 0,
"ParentKey": "Transportation"
},
{
"Key": "Railway",
"Value": "铁路",
"PageKey": 0,
"ParentKey": "Transportation"
},
{
"Key": "Logistics",
"Value": "物流运输",
"PageKey": 0,
"ParentKey": "Transportation"
},
{
"Key": "Traffic",
"Value": "公共交通",
"PageKey": 0,
"ParentKey": "Transportation"
},
{
"Key": "ShippingShips",
"Value": "航运船舶",
"PageKey": 0,
"ParentKey": "Transportation"
}
]
},
{
"Key": "CulturalMedia",
"Value": "文化传媒",
"PageKey": 0,
"List": [
{
"Key": "MediaPublishing",
"Value": "媒体出版",
"PageKey": 0,
"ParentKey": "CulturalMedia"
},
{
"Key": "Photography",
"Value": "摄影",
"PageKey": 0,
"ParentKey": "CulturalMedia"
},
{
"Key": "Exhibition",
"Value": "公关会展",
"PageKey": 0,
"ParentKey": "CulturalMedia"
},
{
"Key": "Comic",
"Value": "动漫",
"PageKey": 0,
"ParentKey": "CulturalMedia"
},
{
"Key": "Originality",
"Value": "广告创意",
"PageKey": 0,
"ParentKey": "CulturalMedia"
},
{
"Key": "Spread",
"Value": "文化传播",
"PageKey": 0,
"ParentKey": "CulturalMedia"
},
{
"Key": "Design",
"Value": "设计",
"PageKey": 0,
"ParentKey": "CulturalMedia"
}
]
},
{
"Key": "EntertainmentSports",
"Value": "娱乐体育",
"PageKey": 0,
"List": [
{
"Key": "Model",
"Value": "模特",
"PageKey": 0,
"ParentKey": "EntertainmentSports"
},
{
"Key": "Music",
"Value": "音乐",
"PageKey": 0,
"ParentKey": "EntertainmentSports"
},
{
"Key": "SportsSports",
"Value": "运动体育",
"PageKey": 0,
"ParentKey": "EntertainmentSports"
},
{
"Key": "Movies",
"Value": "影视",
"PageKey": 0,
"ParentKey": "EntertainmentSports"
}
]
},
{
"Key": "PublicUtilities",
"Value": "公共事业",
"PageKey": 0,
"List": [
{
"Key": "PublicWelfare",
"Value": "公益",
"PageKey": 0,
"ParentKey": "PublicUtilities"
},
{
"Key": "Speak",
"Value": "科研",
"PageKey": 0,
"ParentKey": "PublicUtilities"
},
{
"Key": "GovernmentOrgans",
"Value": "政府机构",
"PageKey": 0,
"ParentKey": "PublicUtilities"
},
{
"Key": "Education",
"Value": "教育",
"PageKey": 0,
"ParentKey": "PublicUtilities"
},
{
"Key": "Law",
"Value": "法律",
"PageKey": 0,
"ParentKey": "PublicUtilities"
},
{
"Key": "MedicalCare",
"Value": "医疗",
"PageKey": 0,
"ParentKey": "PublicUtilities"
}
]
},
{
"Key": "Student",
"Value": "学生",
"PageKey": 0,
"List": [
{"Key": "PuPils", "Value": "学生", "PageKey": 0, "ParentKey": "Student"}
]
},
{
"Key": "Nothing",
"Value": "无",
"PageKey": 0,
"List": [
{"Key": "NotHave", "Value": "无", "PageKey": 0, "ParentKey": "Nothing"}
]
}
],
'city': [
{
"Key": "VietNam",
"Value": "越南",
"PageKey": 0,
"List": [
{
"Key": "AnGiang",
"Value": "安江",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "BacGiang",
"Value": "北江",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "BacCan",
"Value": "北件",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "BacLieu",
"Value": "薄辽",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "BeiNing",
"Value": "北宁",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "BaRiaVungTau",
"Value": "巴地头顿",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "BenTre",
"Value": "槟椥",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "BinhDinh",
"Value": "平定",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "PingYang",
"Value": "平阳",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "PingFu",
"Value": "平福",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "NinhThuan",
"Value": "平顺",
"PageKey": 0,
"ParentKey": "VietNam"
},
{"Key": "CaMau", "Value": "金瓯", "PageKey": 0, "ParentKey": "VietNam"},
{
"Key": "CaoBang",
"Value": "高平",
"PageKey": 0,
"ParentKey": "VietNam"
},
{"Key": "DeLe", "Value": "得乐", "PageKey": 0, "ParentKey": "VietNam"},
{
"Key": "DeNong",
"Value": "得农",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "DienBien",
"Value": "奠边",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "DongNai",
"Value": "同奈",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "DongThap",
"Value": "同塔",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "GiaLai",
"Value": "嘉莱",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "HaGiang",
"Value": "河江",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "HaiDuang",
"Value": "海阳",
"PageKey": 0,
"ParentKey": "VietNam"
},
{"Key": "Henan", "Value": "河南", "PageKey": 0, "ParentKey": "VietNam"},
{
"Key": "HaTinh",
"Value": "河静",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "HoaBinh",
"Value": "和平",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "HouJiang",
"Value": "后江",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "Xingan",
"Value": "兴安",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "KhanhHo",
"Value": "庆和",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "JianJiang",
"Value": "坚江",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "KonTum",
"Value": "昆嵩",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "LaiChua",
"Value": "莱州",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "LamDong",
"Value": "林同",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "LangSon",
"Value": "谅山",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "LaoCai",
"Value": "老街",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "LongAn",
"Value": "隆安",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "NamDinh",
"Value": "南定",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "NgheAn",
"Value": "乂安",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "NingShun",
"Value": "宁顺",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "FuShou",
"Value": "富寿",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "PhuYen",
"Value": "富安",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "QuangBinh",
"Value": "广平",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "QuangNam",
"Value": "广南",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "QuangNgai",
"Value": "广义",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "QuangNinh",
"Value": "广宁",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "QuangTri",
"Value": "广治",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "SocTrang",
"Value": "朔庄",
"PageKey": 0,
"ParentKey": "VietNam"
},
{"Key": "SonLa", "Value": "山罗", "PageKey": 0, "ParentKey": "VietNam"},
{
"Key": "TayNinh",
"Value": "西宁",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "ThaiBinh",
"Value": "太平",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "ThaiNguyen",
"Value": "太原",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "ThanhHoa",
"Value": "清化",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "ThuaThienHue",
"Value": "承天顺化",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "TraVinh",
"Value": "茶荣",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "TuyenQuang",
"Value": "宣光",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "VinhLon",
"Value": "永隆",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "VinhPhu",
"Value": "永富",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "YenBai",
"Value": "安沛",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "CaoTho",
"Value": "芹苴",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "DaNang",
"Value": "岘港",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "Haiphong",
"Value": "海防",
"PageKey": 0,
"ParentKey": "VietNam"
},
{"Key": "Hanoi", "Value": "河内", "PageKey": 0, "ParentKey": "VietNam"},
{
"Key": "HoChiMinhCIty",
"Value": "胡志明市",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "Qianjiang",
"Value": "前江",
"PageKey": 0,
"ParentKey": "VietNam"
},
{
"Key": "NingPing",
"Value": "宁平",
"PageKey": 0,
"ParentKey": "VietNam"
}
]
},
{
"Key": "China",
"Value": "中国",
"PageKey": 0,
"List": [
{
"Key": "ChinaRepeat",
"Value": "中国",
"PageKey": 0,
"ParentKey": "China"
}
]
},
{"Key": "UnitedStates", "Value": "美国", "PageKey": 0, "List": []},
{"Key": "Russia", "Value": "俄罗斯", "PageKey": 0, "List": []},
{"Key": "Germany", "Value": "德国", "PageKey": 0, "List": []},
{"Key": "UnitedKingdom", "Value": "英国", "PageKey": 0, "List": []},
{"Key": "France", "Value": "法国", "PageKey": 0, "List": []},
{"Key": "Australia", "Value": "澳大利亚", "PageKey": 0, "List": []},
{"Key": "Japan", "Value": "日本", "PageKey": 0, "List": []},
{"Key": "Korea", "Value": "韩国", "PageKey": 0, "List": []},
{"Key": "Laos", "Value": "老挝", "PageKey": 0, "List": []},
{"Key": "Cambodia", "Value": "柬甫寨", "PageKey": 0, "List": []},
{"Key": "Myanmar", "Value": "缅甸", "PageKey": 0, "List": []},
{"Key": "Thailand", "Value": "泰国", "PageKey": 0, "List": []},
{"Key": "Malaysia", "Value": "马来西亚", "PageKey": 0, "List": []},
{"Key": "Singapore", "Value": "新加坡", "PageKey": 0, "List": []},
{"Key": "OtherCountries", "Value": "其他国家", "PageKey": 0, "List": []}
]
},
{
'program': [
{"Key": "Motion", "Value": "健康運動", "PageKey": 0, "List": []},
@@ -5992,7 +5211,7 @@ class WebData {
///ios点击上传相册回来后 中国的数据会丢失
if (!map.containsKey(city[1])) {
result = '中国';
result = getChina();
return;
}
result += result == ''
@@ -6002,6 +5221,35 @@ class WebData {
return result;
}
getChina() {
int code = UserData().language;
String str;
switch (code) {
case LanguageType.English:
str = 'China';
break;
case LanguageType.Vietnamese:
str = 'Trung quốc';
break;
case LanguageType.TraditionalChinese:
str = '中國';
break;
case LanguageType.SimplifiedChinese:
str = '中国';
break;
case LanguageType.Korean:
str = '중국';
break;
case LanguageType.Japanese:
str = '中国';
break;
default:
str = 'China';
break;
}
return str;
}
bool isThreeDayAgo(String loginStr) {
var temp = DateTime.parse(loginStr);
var logindate = DateTime.utc(temp.year, temp.month, temp.day, temp.hour,


+ 178
- 178
lib/generated/i18n.dart Ver ficheiro

@@ -2795,15 +2795,15 @@ class _I18n_vi_VN extends I18n {
/// "Right 1"
@override
String get see_more => "Right 1";
/// "Tài khoản không giới hạn số lượng xem mỗi ngày"
/// "Tài khoản không giới hạn số lượng xem mỗi ngày."
@override
String get unlimited_see => "Tài khoản không giới hạn số lượng xem mỗi ngày";
String get unlimited_see => "Tài khoản không giới hạn số lượng xem mỗi ngày.";
/// "Right 2"
@override
String get see_cheaper => "Right 2";
/// "Xem album và tài khoản miễn phí /s1 lần trong một ngày"
/// "Xem album và tài khoản miễn phí /s1 lần trong một ngày."
@override
String get free10 => "Xem album và tài khoản miễn phí /s1 lần trong một ngày";
String get free10 => "Xem album và tài khoản miễn phí /s1 lần trong một ngày.";
/// "Right 3"
@override
String get see_longer => "Right 3";
@@ -3398,9 +3398,9 @@ class _I18n_vi_VN extends I18n {
/// "Tiệc tùng"
@override
String get night_party => "Tiệc tùng";
/// "Tham ăn"
/// "Ăn uống"
@override
String get gourmet_party => "Tham ăn";
String get gourmet_party => "Ăn uống";
/// "Xem phim"
@override
String get watch_movie => "Xem phim";
@@ -3581,9 +3581,9 @@ class _I18n_vi_VN extends I18n {
/// "Báo cáo ẩn danh"
@override
String get anonymous_report => "Báo cáo ẩn danh";
/// "Video"
/// "Video xác thực"
@override
String get certified_video => "Video";
String get certified_video => "Video xác thực";
/// "Em ấy đã được xác thực danh tính qua video"
@override
String get passed_video => "Em ấy đã được xác thực danh tính qua video";
@@ -3794,9 +3794,9 @@ class _I18n_vi_VN extends I18n {
/// "Gửi cho em ấy"
@override
String get sent_she => "Gửi cho em ấy";
/// "Liên mic"
/// "Gọi thoại"
@override
String get chat => "Liên mic";
String get chat => "Gọi thoại";
/// "Đối phương đã tắt chức năng trò chuyện trực tuyến"
@override
String get cantt_voice => "Đối phương đã tắt chức năng trò chuyện trực tuyến";
@@ -3821,9 +3821,9 @@ class _I18n_vi_VN extends I18n {
/// "Chế độ loa ngoài"
@override
String get handsfree => "Chế độ loa ngoài";
/// "Thưởng"
/// "Tặng quà"
@override
String get giving_gift => "Thưởng";
String get giving_gift => "Tặng quà";
/// "Thưởng thành công"
@override
String get give_success => "Thưởng thành công";
@@ -4505,9 +4505,9 @@ class _I18n_vi_VN extends I18n {
/// "Chi tiết chương trình"
@override
String get program_details => "Chi tiết chương trình";
/// "Chủ đề chương trình"
/// "Chủ đề CT"
@override
String get program_theme => "Chủ đề chương trình";
String get program_theme => "Chủ đề CT";
/// "Nhấn vào đây để chọn"
@override
String get click_select => "Nhấn vào đây để chọn";
@@ -4733,9 +4733,9 @@ class _I18n_vi_VN extends I18n {
/// "Xin cung cấp ảnh chụp màn hình liên quan để chúng tôi theo dõi xác thực"
@override
String get provide_screenshots => "Xin cung cấp ảnh chụp màn hình liên quan để chúng tôi theo dõi xác thực";
/// "Vui lòng mô tả chi tiết(trong vòng 100 ký tự)"
/// "Vui lòng mô tả chi tiết (trong vòng 100 ký tự)"
@override
String get describe_details => "Vui lòng mô tả chi tiết(trong vòng 100 ký tự)";
String get describe_details => "Vui lòng mô tả chi tiết (trong vòng 100 ký tự)";
/// "Vui lòng chọn lý do báo cáo"
@override
String get report_reason => "Vui lòng chọn lý do báo cáo";
@@ -5030,12 +5030,12 @@ class _I18n_vi_VN extends I18n {
/// "Yêu cầu rút tiền /s1 H của bạn đang được xét duyệt."
@override
String get adding_money => "Yêu cầu rút tiền /s1 H của bạn đang được xét duyệt.";
/// "miễn phí hưởng nhân viên dịch thuật kịp thời"
/// "miễn phí hưởng nhân viên dịch thuật kịp thời."
@override
String get free_translate => "miễn phí hưởng nhân viên dịch thuật kịp thời";
/// "Nhân viên CSKH vì bạn phục vụ"
String get free_translate => "miễn phí hưởng nhân viên dịch thuật kịp thời.";
/// "Nhân viên CSKH vì bạn phục vụ."
@override
String get personalTraff => "Nhân viên CSKH vì bạn phục vụ";
String get personalTraff => "Nhân viên CSKH vì bạn phục vụ.";
/// "Người dịch đang dịch..."
@override
String get ManTranslate => "Người dịch đang dịch...";
@@ -5057,15 +5057,15 @@ class _I18n_vi_VN extends I18n {
/// "Nhấn lần nữa để thoát"
@override
String get confirm_exit => "Nhấn lần nữa để thoát";
/// "Cơ hội miễn phí phát sóng /s1 /ngày "
/// "Cơ hội miễn phí phát sóng /s1 /ngày."
@override
String get free_program => "Cơ hội miễn phí phát sóng /s1 /ngày ";
String get free_program => "Cơ hội miễn phí phát sóng /s1 /ngày.";
/// "Hình ảnh"
@override
String get picture => "Hình ảnh";
/// "Máy ảnh"
/// "Chụp ảnh"
@override
String get camera => "Máy ảnh";
String get camera => "Chụp ảnh";
/// "Video"
@override
String get video => "Video";
@@ -5537,15 +5537,15 @@ class _I18n_vi_VN extends I18n {
/// "Báo danh trong ngày để nhận /s1 điểm tích lũy"
@override
String get today_score => "Báo danh trong ngày để nhận /s1 điểm tích lũy";
/// "1. Báo danh hàng ngày để tích lũy điểm, số ngày tích lũy càng nhiều điêm tích lũy càng cao. \n2. Điểm tích lũy có thể đổi thành H coin, khi đổi sẽ tiêu hao điểm tích lũy tương đương, hãy thận trọng khi đổi. \n3.Báo danh sẽ được đặt lại vào ngày cuối cùng của tháng, xóa điểm tích lũy. Hãy kịp thời đổi điểm tích lũy nhé!"
/// "1. Báo danh hàng ngày để tích lũy điểm, số ngày tích lũy càng nhiều điêm tích lũy càng cao. \n2. Điểm tích lũy có thể đổi thành H coin, khi đổi sẽ tiêu hao điểm tích lũy tương đương, hãy thận trọng khi đổi. \n3. Báo danh sẽ được đặt lại vào ngày cuối cùng của tháng, xóa điểm tích lũy. Hãy kịp thời đổi điểm tích lũy nhé!"
@override
String get sign_tips => "1. Báo danh hàng ngày để tích lũy điểm, số ngày tích lũy càng nhiều điêm tích lũy càng cao. \n2. Điểm tích lũy có thể đổi thành H coin, khi đổi sẽ tiêu hao điểm tích lũy tương đương, hãy thận trọng khi đổi. \n3.Báo danh sẽ được đặt lại vào ngày cuối cùng của tháng, xóa điểm tích lũy. Hãy kịp thời đổi điểm tích lũy nhé!";
String get sign_tips => "1. Báo danh hàng ngày để tích lũy điểm, số ngày tích lũy càng nhiều điêm tích lũy càng cao. \n2. Điểm tích lũy có thể đổi thành H coin, khi đổi sẽ tiêu hao điểm tích lũy tương đương, hãy thận trọng khi đổi. \n3. Báo danh sẽ được đặt lại vào ngày cuối cùng của tháng, xóa điểm tích lũy. Hãy kịp thời đổi điểm tích lũy nhé!";
/// "Báo danh"
@override
String get sign_in => "Báo danh";
/// "Điểm tích lũy của tôi"
/// "Điểm tích lũy"
@override
String get my_score => "Điểm tích lũy của tôi";
String get my_score => "Điểm tích lũy";
/// "Báo danh ngay"
@override
String get signin_now => "Báo danh ngay";
@@ -6224,117 +6224,117 @@ class _I18n_vi_VN extends I18n {
/// "Nếu gặp phải vấn đề bạn có thể phản hồi với chúng tôi!"
@override
String get feedback_tips => "Nếu gặp phải vấn đề bạn có thể phản hồi với chúng tôi!";
/// "人工重译"
/// " Người dịch lại"
@override
String get man_retranslate => "人工重译";
/// "机器重译"
String get man_retranslate => " Người dịch lại";
/// " Robot dịch lại"
@override
String get robot_retranslate => "机器重译";
/// "查看原文"
String get robot_retranslate => " Robot dịch lại";
/// " Xem bản gốc "
@override
String get see_original => "查看原文";
/// "转发"
String get see_original => " Xem bản gốc ";
/// " Chia sẻ"
@override
String get forward => "转发";
/// "复制下载地址"
String get forward => " Chia sẻ";
/// " Copy link tải"
@override
String get copy_download_url => "复制下载地址";
/// "共/s1位朋友"
String get copy_download_url => " Copy link tải";
/// " Tổng có /s1 bạn bè chung "
@override
String get total_friends_nus => "共/s1位朋友";
/// "有图片违规"
String get total_friends_nus => " Tổng có /s1 bạn bè chung ";
/// " Có ảnh vi phạm quy định"
@override
String get hava_error_photo => "有图片违规";
/// "翻译服务已结束,辛苦你了。请保持在线,留意新订单通知"
String get hava_error_photo => " Có ảnh vi phạm quy định";
/// " Dịch vụ dịch thuật đã kết thúc và bạn đã làm việc vất vả rồi. Vui lòng luôn ở trạng thái online, chú ý thông báo đơn hàng mới"
@override
String get translation_butler_evaluation_tips2 => "翻译服务已结束,辛苦你了。请保持在线,留意新订单通知";
/// "时间:今天/s1 时长:"
String get translation_butler_evaluation_tips2 => " Dịch vụ dịch thuật đã kết thúc và bạn đã làm việc vất vả rồi. Vui lòng luôn ở trạng thái online, chú ý thông báo đơn hàng mới";
/// " Thời gian: Hôm nay /s1 Tổng thời gian: "
@override
String get translation_butler_push_order_time => "时间:今天/s1 时长:";
/// "下单时间:今天/s1 等待时长:"
String get translation_butler_push_order_time => " Thời gian: Hôm nay /s1 Tổng thời gian: ";
/// " Thời gian đặt hàng: hôm nay /s1 Tổng thời gian chờ:"
@override
String get translation_butler_push_order_time2 => "下单时间:今天/s1 等待时长:";
/// "大神专属"
String get translation_butler_push_order_time2 => " Thời gian đặt hàng: hôm nay /s1 Tổng thời gian chờ:";
/// " Đại thần chuyên quyền "
@override
String get translation_butler_title3 => "大神专属";
/// "开启接单"
String get translation_butler_title3 => " Đại thần chuyên quyền ";
/// " Bắt đầu bật chế độ tiếp nhận đơn"
@override
String get translation_butler_start_receive_order => "开启接单";
/// "未开启接单"
String get translation_butler_start_receive_order => " Bắt đầu bật chế độ tiếp nhận đơn";
/// " Chưa bật chế độ tiếp nhận đơn"
@override
String get translation_butler_stop_receive_order => "未开启接单";
/// "翻译人员无法进入创建订单"
String get translation_butler_stop_receive_order => " Chưa bật chế độ tiếp nhận đơn";
/// " Người phiên dịch không thể nhập tạo dịch vụ"
@override
String get translation_butler_stop_tips => "翻译人员无法进入创建订单";
/// "场景:"
String get translation_butler_stop_tips => " Người phiên dịch không thể nhập tạo dịch vụ";
/// " Tình cảnh:"
@override
String get translation_butler_scenes2 => "场景:";
/// "[翻译管家服务开始]"
String get translation_butler_scenes2 => " Tình cảnh:";
/// "[Bắt đầu dịch vụ phiên dịch]"
@override
String get translation_butler_last_item_start => "[翻译管家服务开始]";
/// "[翻译管家服务结束]"
String get translation_butler_last_item_start => "[Bắt đầu dịch vụ phiên dịch]";
/// "[Kết thúc dịch vụ phiên dịch]"
@override
String get translation_butler_last_item_end => "[翻译管家服务结束]";
/// "起点"
String get translation_butler_last_item_end => "[Kết thúc dịch vụ phiên dịch]";
/// " Điểm bắt đầu "
@override
String get travel_start => "起点";
/// "终点"
String get travel_start => " Điểm bắt đầu ";
/// " Điểm kết thúc "
@override
String get travel_end => "终点";
/// "翻译订单超时已被取消"
String get travel_end => " Điểm kết thúc ";
/// " Dịch vụ phiên dịch hết giờ đã bị hủy "
@override
String get translation_butler_order_time_out => "翻译订单超时已被取消";
/// "翻译服务未结束不能主动结束"
String get translation_butler_order_time_out => " Dịch vụ phiên dịch hết giờ đã bị hủy ";
/// " Khi dịch vụ phiên dịch chưa kết thúc, người dịch không thể chủ động kết thúc"
@override
String get translation_butler_order_close_tips => "翻译服务未结束不能主动结束";
/// "是否提前结束翻译管家服务?"
String get translation_butler_order_close_tips => " Khi dịch vụ phiên dịch chưa kết thúc, người dịch không thể chủ động kết thúc";
/// " Bạn có phải muốn kết thúc dịch vụ dịch thuật?"
@override
String get translation_butler_order_close_tips2 => "是否提前结束翻译管家服务?";
/// "发布订单失败"
String get translation_butler_order_close_tips2 => " Bạn có phải muốn kết thúc dịch vụ dịch thuật?";
/// " Đơn hàng gửi thất bại "
@override
String get translation_butler_order_failed => "发布订单失败";
/// "订单生成失败 网络异常"
String get translation_butler_order_failed => " Đơn hàng gửi thất bại ";
/// " Yêu cầu dịch vụ thất bại, mạng bất thường "
@override
String get translation_butler_order_failed2 => "订单生成失败 网络异常";
/// "还在烦恼对方听不懂你说什么吗?选择你需要翻译的语言,描述你遇到的问题。贴身翻译管家将随时为你服务"
String get translation_butler_order_failed2 => " Yêu cầu dịch vụ thất bại, mạng bất thường ";
/// " Bạn đang lo lắng đối phương nghe không hiểu bạn nói gì sao? Mời bạn chọn ngôn ngữ bạn cần dịch,bạn hãy nói lại vấn đề bạn gặp phải,trợ lý dịch thuật sẽ phục vụ bạn mọi lúc mọi nơi "
@override
String get translation_butler_introduction => "还在烦恼对方听不懂你说什么吗?选择你需要翻译的语言,描述你遇到的问题。贴身翻译管家将随时为你服务";
/// "是否在离目的地越行越远?选择你的起点和终点,出行管家为你精准测距"
String get translation_butler_introduction => " Bạn đang lo lắng đối phương nghe không hiểu bạn nói gì sao? Mời bạn chọn ngôn ngữ bạn cần dịch,bạn hãy nói lại vấn đề bạn gặp phải,trợ lý dịch thuật sẽ phục vụ bạn mọi lúc mọi nơi ";
/// " Có phải cách đích càng ngày càng xa tốt? Chọn điểm bắt đầu và điểm kết thúc của bạn, để trợ lý chỉ đường giúp bạn đo khoảng cách chính xác"
@override
String get travel_introduction => "是否在离目的地越行越远?选择你的起点和终点,出行管家为你精准测距";
/// "出行聊天畅通无阻"
String get travel_introduction => " Có phải cách đích càng ngày càng xa tốt? Chọn điểm bắt đầu và điểm kết thúc của bạn, để trợ lý chỉ đường giúp bạn đo khoảng cách chính xác";
/// " Để chỉ đưởng và giao tiếp đơn giản hơn"
@override
String get splash_tips_content4 => "出行聊天畅通无阻";
/// "无忧你的旅行"
String get splash_tips_content4 => " Để chỉ đưởng và giao tiếp đơn giản hơn";
/// " Vô ưu du lịch của bạn"
@override
String get splash_tips_content5 => "无忧你的旅行";
/// "震动通知"
String get splash_tips_content5 => " Vô ưu du lịch của bạn";
/// " Thông báo rung "
@override
String get shock_notice => "震动通知";
/// "最多上传/s1张"
String get shock_notice => " Thông báo rung ";
/// " Tải lên tối đa /s1 ảnh "
@override
String get max_upload_size => "最多上传/s1张";
/// "您的贴身出行管家,解决语言不通打车走错路的问题"
String get max_upload_size => " Tải lên tối đa /s1 ảnh ";
/// " Trợ lý chỉ đường giúp bạn giải quyết vấn đề về ngôn ngữ, gọi xe ,đi sai đường "
@override
String get travel_tips2 => "您的贴身出行管家,解决语言不通打车走错路的问题";
/// "现在我们可以开始聊天了。"
String get travel_tips2 => " Trợ lý chỉ đường giúp bạn giải quyết vấn đề về ngôn ngữ, gọi xe ,đi sai đường ";
/// " Bây giờ chúng ta có thể bắt đầu trò chuyện rồi!"
@override
String get new_friends_tips => "现在我们可以开始聊天了。";
/// "填写自我简介获得更多关注,在此处填写"
String get new_friends_tips => " Bây giờ chúng ta có thể bắt đầu trò chuyện rồi!";
/// " Điền vào thông tin của bạn để được theo dõi nhiều hơn,xin điền vào đây"
@override
String get msg_tips => "填写自我简介获得更多关注,在此处填写";
/// "/s1条新消息"
String get msg_tips => " Điền vào thông tin của bạn để được theo dõi nhiều hơn,xin điền vào đây";
/// "/s1 tin nhắn mới "
@override
String get new_msg => "/s1条新消息";
/// "上传"
String get new_msg => "/s1 tin nhắn mới ";
/// " Tải lên "
@override
String get upload1 => "上传";
/// "他的资料"
String get upload1 => " Tải lên ";
/// " Thông tin của anh ấy "
@override
String get his_profile => "他的资料";
/// "她的资料"
String get his_profile => " Thông tin của anh ấy ";
/// " Thông tin của chị ấy "
@override
String get her_profile => "她的资料";
String get her_profile => " Thông tin của chị ấy ";

@override
TextDirection get textDirection => TextDirection.ltr;
@@ -15434,9 +15434,9 @@ class _I18n_ko_KR extends I18n {
/// "사진 업로드"
@override
String get upload => "사진 업로드";
/// "빨간 봉투 사진을 설치하다"
/// "빨간 패킷 사진 설치 하기"
@override
String get set_photo => "빨간 봉투 사진을 설치하다";
String get set_photo => "빨간 패킷 사진 설치 하기";
/// "화면을 누르고 끌면 사진을 정렬할 수 있다"
@override
String get photo_order => "화면을 누르고 끌면 사진을 정렬할 수 있다";
@@ -17570,117 +17570,117 @@ class _I18n_ko_KR extends I18n {
/// "어떤 문제라도 피드백해 주세요."
@override
String get feedback_tips => "어떤 문제라도 피드백해 주세요.";
/// "人工重译"
/// "인공 새로 번역"
@override
String get man_retranslate => "人工重译";
/// "机器重译"
String get man_retranslate => "인공 새로 번역";
/// "로봇 새로 번역"
@override
String get robot_retranslate => "机器重译";
/// "查看原文"
String get robot_retranslate => "로봇 새로 번역";
/// "원문 보기"
@override
String get see_original => "查看原文";
/// "转发"
String get see_original => "원문 보기";
/// "전달"
@override
String get forward => "转发";
/// "复制下载地址"
String get forward => "전달";
/// "다운로드 주소 복사"
@override
String get copy_download_url => "复制下载地址";
/// "共/s1位朋友"
String get copy_download_url => "다운로드 주소 복사";
/// "총/s1분 친구"
@override
String get total_friends_nus => "共/s1位朋友";
/// "有图片违规"
String get total_friends_nus => "총/s1분 친구";
/// "사진 위반이 있습니다."
@override
String get hava_error_photo => "有图片违规";
/// "翻译服务已结束,辛苦你了。请保持在线,留意新订单通知"
String get hava_error_photo => "사진 위반이 있습니다.";
/// "번역 서비스가 끝났으니 수고하세요.온라인을 유지하고 새 주문 통지에 유의하십시오."
@override
String get translation_butler_evaluation_tips2 => "翻译服务已结束,辛苦你了。请保持在线,留意新订单通知";
/// "时间:今天/s1 时长:"
String get translation_butler_evaluation_tips2 => "번역 서비스가 끝났으니 수고하세요.온라인을 유지하고 새 주문 통지에 유의하십시오.";
/// "시간:오늘/s1 시:"
@override
String get translation_butler_push_order_time => "时间:今天/s1 时长:";
/// "下单时间:今天/s1 等待时长:"
String get translation_butler_push_order_time => "시간:오늘/s1 시:";
/// " 주문 시간: 오늘/s1 대기 시간:"
@override
String get translation_butler_push_order_time2 => "下单时间:今天/s1 等待时长:";
/// "大神专属"
String get translation_butler_push_order_time2 => " 주문 시간: 오늘/s1 대기 시간:";
/// "대신 전속"
@override
String get translation_butler_title3 => "大神专属";
/// "开启接单"
String get translation_butler_title3 => "대신 전속";
/// "주문 켜기"
@override
String get translation_butler_start_receive_order => "开启接单";
/// "未开启接单"
String get translation_butler_start_receive_order => "주문 켜기";
/// "주문 미켜기"
@override
String get translation_butler_stop_receive_order => "未开启接单";
/// "翻译人员无法进入创建订单"
String get translation_butler_stop_receive_order => "주문 미켜기";
/// " 통역사가 창립 주문에 들어갈 수 없음"
@override
String get translation_butler_stop_tips => "翻译人员无法进入创建订单";
/// "场景:"
String get translation_butler_stop_tips => " 통역사가 창립 주문에 들어갈 수 없음";
/// "장소:"
@override
String get translation_butler_scenes2 => "场景:";
/// "[翻译管家服务开始]"
String get translation_butler_scenes2 => "장소:";
/// "[ 통역 집사 서비스 시작]"
@override
String get translation_butler_last_item_start => "[翻译管家服务开始]";
/// "[翻译管家服务结束]"
String get translation_butler_last_item_start => "[ 통역 집사 서비스 시작]";
/// "[ 통역 집사 서비스 종료]"
@override
String get translation_butler_last_item_end => "[翻译管家服务结束]";
/// "起点"
String get translation_butler_last_item_end => "[ 통역 집사 서비스 종료]";
/// "기점"
@override
String get travel_start => "起点";
/// "终点"
String get travel_start => "기점";
/// ""
@override
String get travel_end => "终点";
/// "翻译订单超时已被取消"
String get travel_end => "";
/// "번역 주문이 시간 초과로 취소되었습니다."
@override
String get translation_butler_order_time_out => "翻译订单超时已被取消";
/// "翻译服务未结束不能主动结束"
String get translation_butler_order_time_out => "번역 주문이 시간 초과로 취소되었습니다.";
/// "번역 서비스가 종료되지 않으면 자발적으로 종료할 수 없음."
@override
String get translation_butler_order_close_tips => "翻译服务未结束不能主动结束";
/// "是否提前结束翻译管家服务?"
String get translation_butler_order_close_tips => "번역 서비스가 종료되지 않으면 자발적으로 종료할 수 없음.";
/// "번역 집사 서비스 조기 종료 여부?"
@override
String get translation_butler_order_close_tips2 => "是否提前结束翻译管家服务?";
/// "发布订单失败"
String get translation_butler_order_close_tips2 => "번역 집사 서비스 조기 종료 여부?";
/// "주문 게시 실패"
@override
String get translation_butler_order_failed => "发布订单失败";
/// "订单生成失败 网络异常"
String get translation_butler_order_failed => "주문 게시 실패";
/// " 주문 생성 실패 네트워크 이상"
@override
String get translation_butler_order_failed2 => "订单生成失败 网络异常";
/// "还在烦恼对方听不懂你说什么吗?选择你需要翻译的语言,描述你遇到的问题。贴身翻译管家将随时为你服务"
String get translation_butler_order_failed2 => " 주문 생성 실패 네트워크 이상";
/// "아직도 상대방이 무슨 말인지 알아듣지 못할까 고민 중이에요?당신이 번역해야 할 언어를 선택하고 당신이 맞닥뜨린 문제를 묘사하시오.신변 통역사가 수시로 당신을 위해 봉사할 것입니다."
@override
String get translation_butler_introduction => "还在烦恼对方听不懂你说什么吗?选择你需要翻译的语言,描述你遇到的问题。贴身翻译管家将随时为你服务";
/// "是否在离目的地越行越远?选择你的起点和终点,出行管家为你精准测距"
String get translation_butler_introduction => "아직도 상대방이 무슨 말인지 알아듣지 못할까 고민 중이에요?당신이 번역해야 할 언어를 선택하고 당신이 맞닥뜨린 문제를 묘사하시오.신변 통역사가 수시로 당신을 위해 봉사할 것입니다.";
/// "목적지에서 더 멀리 가고 있습니까?시작점과 끝점을 선택하면 이동 관리인이 정확한 거리 측정을 할 수 있습니다. "
@override
String get travel_introduction => "是否在离目的地越行越远?选择你的起点和终点,出行管家为你精准测距";
/// "出行聊天畅通无阻"
String get travel_introduction => "목적지에서 더 멀리 가고 있습니까?시작점과 끝점을 선택하면 이동 관리인이 정확한 거리 측정을 할 수 있습니다. ";
/// " 여행길에 나가 이야기하는 데 막힘이 없다. "
@override
String get splash_tips_content4 => "出行聊天畅通无阻";
/// "无忧你的旅行"
String get splash_tips_content4 => " 여행길에 나가 이야기하는 데 막힘이 없다. ";
/// "당신의 고민 없은 여행."
@override
String get splash_tips_content5 => "无忧你的旅行";
/// "震动通知"
String get splash_tips_content5 => "당신의 고민 없은 여행.";
/// "진동 알림"
@override
String get shock_notice => "震动通知";
/// "最多上传/s1张"
String get shock_notice => "진동 알림";
/// "최대 업로드/s1장"
@override
String get max_upload_size => "最多上传/s1张";
/// "您的贴身出行管家,解决语言不通打车走错路的问题"
String get max_upload_size => "최대 업로드/s1장";
/// "당신의 밀착 출장 집사가는 말이 통하지 않고 택시를 타고 길을 잘못 드는 문제를 해결합니다. "
@override
String get travel_tips2 => "您的贴身出行管家,解决语言不通打车走错路的问题";
/// "现在我们可以开始聊天了。"
String get travel_tips2 => "당신의 밀착 출장 집사가는 말이 통하지 않고 택시를 타고 길을 잘못 드는 문제를 해결합니다. ";
/// "이제 우리 채팅 시작할 수 있습니다."
@override
String get new_friends_tips => "现在我们可以开始聊天了。";
/// "填写自我简介获得更多关注,在此处填写"
String get new_friends_tips => "이제 우리 채팅 시작할 수 있습니다.";
/// " 프로필을 작성하여 더 많은 관심을 얻고 여기에 기입하세요."
@override
String get msg_tips => "填写自我简介获得更多关注,在此处填写";
/// "/s1条新消息"
String get msg_tips => " 프로필을 작성하여 더 많은 관심을 얻고 여기에 기입하세요.";
/// "/s1건 새 채팅"
@override
String get new_msg => "/s1条新消息";
/// "上传"
String get new_msg => "/s1건 새 채팅";
/// "업로드"
@override
String get upload1 => "上传";
/// "他的资料"
String get upload1 => "업로드";
/// "그의 자료"
@override
String get his_profile => "他的资料";
/// "她的资料"
String get his_profile => "그의 자료";
/// "그녀의 자료"
@override
String get her_profile => "她的资料";
String get her_profile => "그녀의 자료";

@override
TextDirection get textDirection => TextDirection.ltr;


+ 4
- 3
lib/home/ProfilePage.dart Ver ficheiro

@@ -800,13 +800,14 @@ class _ProfilePageState extends State<ProfilePage>
return Container(
width: Screen.width,
padding: EdgeInsets.only(left: 25.5),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
child: Wrap(
crossAxisAlignment: WrapCrossAlignment.center,
//mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
isAttestation && !isMan
? Container(
height: 13,
padding: EdgeInsets.only(left: 5, right: 5),
width: 33,
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),


+ 18
- 11
lib/home/VerificationCenter.dart Ver ficheiro

@@ -35,6 +35,7 @@ class _VerificationCenterPageState extends State<VerificationCenterPage> {
static const Separate_Size = 17.0;
bool isLoadingFish = false;
bool isLoadingVideoFinish = false;
@override
void initState() {
@@ -69,7 +70,9 @@ class _VerificationCenterPageState extends State<VerificationCenterPage> {
videoUrl = resData['data']['AttestationValue'];
_controller = VideoPlayerController.network(videoUrl)
..initialize().then((_) {
setState(() {});
setState(() {
isLoadingVideoFinish = true;
});
});
_controller.addListener(() {
if (_controller.value.position >= _controller.value.duration) {
@@ -175,16 +178,20 @@ class _VerificationCenterPageState extends State<VerificationCenterPage> {
child: Container(
height: 230,
alignment: Alignment.center,
child: Container(
color: Colors.black38,
child: Icon(
Icons.play_arrow,
size: _controller != null && _controller.value.isPlaying
? 0
: 50,
color: Colors.white,
),
)))
child: !isLoadingVideoFinish
? CircularProgressIndicator(
valueColor: AlwaysStoppedAnimation(Colors.black38))
: Container(
color: Colors.black38,
child: Icon(
Icons.play_arrow,
size:
_controller != null && _controller.value.isPlaying
? 0
: 50,
color: Colors.white,
),
)))
],
);
Widget img = Container(


+ 16
- 29
lib/home/VipPage.dart Ver ficheiro

@@ -191,39 +191,27 @@ class _VipPageState extends State<VipPage> with SingleTickerProviderStateMixin {
return Container(
child: Column(
children: <Widget>[
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Padding(
padding: EdgeInsets.only(left: 28),
child: Text(
I18n.of(context).total,
textScaleFactor: 1.0,
style: TextStyle(fontSize: 15.49),
Container(
margin: EdgeInsets.only(left: 28),
alignment: Alignment.centerLeft,
child: RichText(
text: TextSpan(children: [
TextSpan(
text: I18n.of(context).total,
style: TextStyle(fontSize: 15.49, color: Colors.black),
),
),
Padding(
padding: EdgeInsets.only(top: 1),
child: Text(
' $selectMoney',
textScaleFactor: 1.0,
TextSpan(
text: ' $selectMoney',
style: TextStyle(
color: const Color(0xFFE30101),
fontSize: 16,
fontWeight: FontWeight.normal),
),
),
Padding(
padding: EdgeInsets.only(left: 2, top: 1),
child: Text(
I18n.of(context).mask_coin,
textScaleFactor: 1.0,
style:
TextStyle(color: const Color(0xFFE30101), fontSize: 15),
),
),
],
),
TextSpan(
text: I18n.of(context).mask_coin,
style:
TextStyle(color: const Color(0xFFE30101), fontSize: 15))
]))),
Container(
margin: EdgeInsets.only(top: 21, left: 31, right: 31, bottom: 20),
height: 44,
@@ -267,7 +255,7 @@ class _VipPageState extends State<VipPage> with SingleTickerProviderStateMixin {
border: Border.all(
width: 1,
color: isSelect
? const Color(0xFF2D81FF)
? const Color(0xFF2D81FF)
: const Color(0xFFC9C9C9)),
boxShadow: [
BoxShadow(
@@ -311,7 +299,6 @@ class _VipPageState extends State<VipPage> with SingleTickerProviderStateMixin {
bottom: 0,
child: Image.asset(
'assets/images/login/vip_rect2.png',
),
width: 25,
)


+ 3
- 1
lib/home/add_friend.dart Ver ficheiro

@@ -147,7 +147,9 @@ class _AddFriendPageState extends State<AddFriendPage> {
decoration: InputDecoration(
contentPadding:
EdgeInsets.only(right: 10, left: 15, top: 10, bottom: 10),
hintText: UserData().basicInfo.nickName,
hintText: widget.pageType == SendMessagePageType.Remark
? I18n.of(context).setRemark
: UserData().basicInfo.nickName,
hintStyle: TextStyle(fontSize: 16, color: Colors.grey),
border: InputBorder.none,
suffixIcon: Padding(


+ 27
- 7
lib/home/coin_anim.dart Ver ficheiro

@@ -1,8 +1,12 @@
import 'package:chat/utils/MessageMgr.dart';
import 'package:flutter/material.dart';

import '../r.dart';

class CoinAnim extends StatefulWidget {
@required
final animFinishCallback;
CoinAnim({Key key, @required this.animFinishCallback});
@override
_CoinAnimState createState() => _CoinAnimState();
}
@@ -11,8 +15,8 @@ class _CoinAnimState extends State<CoinAnim>
with SingleTickerProviderStateMixin {
Animation<double> _animation;
AnimationController _controller;
double begin = 100;
double end = 20;
double begin = 10;
double end = 2;

@override
void initState() {
@@ -20,27 +24,43 @@ class _CoinAnimState extends State<CoinAnim>
// 启动动画controller
_controller = new AnimationController(
duration: Duration(milliseconds: 500), vsync: this);
_controller.addStatusListener((AnimationStatus status) {});
_controller.addStatusListener((AnimationStatus status) {
setState(() {});
if (status == AnimationStatus.completed) {
widget.animFinishCallback();
_controller.reverse();
}
});

_animation = new Tween<double>(begin: begin, end: end).animate(_controller)
..addListener(() {
setState(() {});
});
_controller.forward();
MessageMgr().on('addCoin', msgAddCoin);
}

_controller.forward(from: begin);
msgAddCoin(data) {
_controller.forward();
}

@override
void dispose() {
_controller.stop();
_controller.dispose();
MessageMgr().off('addCoin', msgAddCoin);
super.dispose();
}

@override
Widget build(BuildContext context) {
return Positioned(
child: Container(
height: _animation.value, child: Image.asset(R.assetsImagesCoin)));
return Container(
margin: EdgeInsets.only(top: _animation.value),
child: Opacity(
opacity: 0.6,
child: Container(
height: 14,
margin: EdgeInsets.only(left: 6),
child: Image.asset(R.assetsImagesCoin))));
}
}

+ 1
- 0
lib/home/friend_page.dart Ver ficheiro

@@ -249,6 +249,7 @@ class _FriendPageState extends State<FriendPage> {
if (mounted) {
setState(() {});
}
MessageMgr().emit('Update UnreadCount');
}
} else {
showToast(resData['msg']);


+ 6
- 2
lib/home/photo_page.dart Ver ficheiro

@@ -512,7 +512,9 @@ class _PhotoPageState extends State<PhotoPage> {
margin: EdgeInsets.only(right: 15, top: 20, bottom: 18),
width: LeftSize,
child: Text(
'$year${I18n.of(context).year}',
UserData().language == LanguageType.Vietnamese
? '${I18n.of(context).year} $year'
: '$year${I18n.of(context).year}',
style: TextStyle(fontSize: 15, fontWeight: FontWeight.w600),
));
}
@@ -552,7 +554,9 @@ class _PhotoPageState extends State<PhotoPage> {
margin: EdgeInsets.only(right: 15, top: 1),
width: LeftSize,
child: Text(
'$month${I18n.of(context).month}',
UserData().language == LanguageType.Vietnamese
? '${I18n.of(context).month} $month'
: '$month${I18n.of(context).month}',
style: TextStyle(fontSize: 15, fontWeight: FontWeight.w600),
)),
Container(


+ 0
- 4
lib/home/realtimehelper/translation_order_push_dialog.dart Ver ficheiro

@@ -36,7 +36,6 @@ class TranslateOrderPushPage extends StatefulWidget {
class TranslateOrderPushPageState extends State<TranslateOrderPushPage> {
@override
void initState() {
// TODO: implement initState
super.initState();
MessageMgr().on(MessageMgr.TRANSLATE_HK_CANCEL_ORDER, cancelOrder);
}
@@ -49,14 +48,12 @@ class TranslateOrderPushPageState extends State<TranslateOrderPushPage> {

@override
void dispose() {
// TODO: implement dispose
super.dispose();
MessageMgr().off(MessageMgr.TRANSLATE_HK_CANCEL_ORDER, cancelOrder);
}

@override
void didChangeDependencies() {
// TODO: implement didChangeDependencies
super.didChangeDependencies();
}

@@ -66,7 +63,6 @@ class TranslateOrderPushPageState extends State<TranslateOrderPushPage> {

@override
Widget build(BuildContext context) {
// TODO: implement build
var scenesList = [
I18n.of(context).translation_scenes_1,
I18n.of(context).translation_scenes_2,


+ 1
- 1
lib/models/ChatMsg.dart Ver ficheiro

@@ -194,6 +194,6 @@ class MsgModel {
}
}
return textList.length == 0 ? [''] : textList;
return textList;
}
}

+ 24
- 19
lib/utils/CustomUI.dart Ver ficheiro

@@ -380,18 +380,9 @@ class CustomUI {
));
}
static Widget buildImgCover(
int imgId,
List pics,
String imgUrl,
double width,
double raduis,
bool isWatch,
BuildContext context,
int type,
{bool isMyself = false,
int payStatus = 0,
int state = 1}) {
static Widget buildImgCover(int imgId, List pics, String imgUrl, double width,
double raduis, bool isWatch, BuildContext context, int type,
{bool isMyself = false, int payStatus = 0, int state = 1}) {
Color color = isWatch
? const Color(0xFF999999)
: const Color(0xFFFB5656); //const Color(0xfffb5656);
@@ -1220,7 +1211,10 @@ class CustomUI {
}
static Widget buildImageLabel(String url, int nums,
{bool isLeft = true, double imgOpc = 0.6, double imgHeight = 14}) {
{bool isLeft = true,
double imgOpc = 0.6,
double imgHeight = 14,
bool isPlayAnim = false}) {
double radius = 2.75;
return Container(
margin: EdgeInsets.only(top: 16, bottom: 14),
@@ -1246,8 +1240,9 @@ class CustomUI {
opacity: imgOpc,
child: Container(
height: imgHeight,
width: imgHeight,
margin: EdgeInsets.only(left: 5.5),
child: Image.asset(url))),
child: isPlayAnim ? Text('') : Image.asset(url))),
Opacity(
opacity: 0.8,
child: Container(
@@ -1265,11 +1260,22 @@ class CustomUI {
///** isUser 是否是用户,或为 翻译
static void buildTranslationHelperOrderDialog(
BuildContext context, bool isUser,
{String orderId, int scenes = 0, String desc,Function userStartChat,int createTime,String userName}) {
{String orderId,
int scenes = 0,
String desc,
Function userStartChat,
int createTime,
String userName}) {
Navigator.of(context).push(TutorialOverlay(
child: TranslateOrderPushPage(isUser,orderId: orderId,scenes: scenes,desc: desc,userStartChat: userStartChat,createTime: createTime,userName: userName,),
child: TranslateOrderPushPage(
isUser,
orderId: orderId,
scenes: scenes,
desc: desc,
userStartChat: userStartChat,
createTime: createTime,
userName: userName,
),
));
}
@@ -1290,7 +1296,6 @@ class CustomUI {
return _textPainter.width;
}
static void buildTowConfirmWithCountDown(
BuildContext context,
String tipTitle,


+ 2
- 1
lib/utils/FullWithButton.dart Ver ficheiro

@@ -38,7 +38,8 @@ class FullWidthButton extends StatelessWidget {
iconCode == null
? Container()
: Container(
margin: EdgeInsets.only(right: 5,bottom: 3),
//color: Colors.red,
margin: EdgeInsets.only(right: 5, bottom: 3, top: 1.5),
child: Icon(
IconData(
iconCode,


Carregando…
Cancelar
Guardar