Browse Source

safety

master
fmk 3 years ago
parent
commit
bc1825b7ad
  1. BIN
      assets/image/2x/icon_location_address.png
  2. BIN
      assets/image/2x/icon_mine_card.png
  3. BIN
      assets/image/2x/icon_mine_edit.png
  4. BIN
      assets/image/2x/icon_mine_invoice_assistant.png
  5. BIN
      assets/image/2x/icon_mine_order_dfk.png
  6. BIN
      assets/image/2x/icon_mine_order_qb.png
  7. BIN
      assets/image/2x/icon_mine_order_wwc.png
  8. BIN
      assets/image/2x/icon_mine_order_ywc.png
  9. BIN
      assets/image/2x/icon_mine_records_of_consumption.png
  10. BIN
      assets/image/2x/icon_mine_setting.png
  11. BIN
      assets/image/2x/icon_mine_wallet.png
  12. BIN
      assets/image/2x/icon_scan_qr_code.png
  13. BIN
      assets/image/2x/icon_user.png
  14. BIN
      assets/image/3x/icon_location_address.png
  15. BIN
      assets/image/3x/icon_mine_card.png
  16. BIN
      assets/image/3x/icon_mine_edit.png
  17. BIN
      assets/image/3x/icon_mine_invoice_assistant.png
  18. BIN
      assets/image/3x/icon_mine_order_dfk.png
  19. BIN
      assets/image/3x/icon_mine_order_qb.png
  20. BIN
      assets/image/3x/icon_mine_order_wwc.png
  21. BIN
      assets/image/3x/icon_mine_order_ywc.png
  22. BIN
      assets/image/3x/icon_mine_records_of_consumption.png
  23. BIN
      assets/image/3x/icon_mine_setting.png
  24. BIN
      assets/image/3x/icon_mine_wallet.png
  25. BIN
      assets/image/3x/icon_scan_qr_code.png
  26. BIN
      assets/image/3x/icon_user.png
  27. BIN
      assets/image/icon_location_address.png
  28. BIN
      assets/image/icon_mine_card.png
  29. BIN
      assets/image/icon_mine_edit.png
  30. BIN
      assets/image/icon_mine_invoice_assistant.png
  31. BIN
      assets/image/icon_mine_order_dfk.png
  32. BIN
      assets/image/icon_mine_order_qb.png
  33. BIN
      assets/image/icon_mine_order_wwc.png
  34. BIN
      assets/image/icon_mine_order_ywc.png
  35. BIN
      assets/image/icon_mine_records_of_consumption.png
  36. BIN
      assets/image/icon_mine_setting.png
  37. BIN
      assets/image/icon_mine_wallet.png
  38. BIN
      assets/image/icon_scan_qr_code.png
  39. BIN
      assets/image/icon_user.png
  40. 12
      ios/Podfile.lock
  41. 8
      lib/generated/intl/messages_en.dart
  42. 8
      lib/generated/intl/messages_zh_CN.dart
  43. 8
      lib/generated/intl/messages_zh_Hans_CN.dart
  44. 8
      lib/generated/intl/messages_zh_Hant_CN.dart
  45. 8
      lib/generated/intl/messages_zh_TW.dart
  46. 80
      lib/generated/l10n.dart
  47. 3
      lib/home/home_page.dart
  48. 48
      lib/home/huixiang_view/origin_info.dart
  49. 8
      lib/l10n/intl_en.arb
  50. 8
      lib/l10n/intl_zh_CN.arb
  51. 8
      lib/l10n/intl_zh_Hans_CN.arb
  52. 9
      lib/l10n/intl_zh_Hant_CN.arb
  53. 8
      lib/l10n/intl_zh_TW.arb
  54. 46
      lib/login/login_page.dart
  55. 2
      lib/main.dart
  56. 94
      lib/mine/mine_page.dart
  57. 74
      lib/mine/mine_view/mine_item.dart
  58. 134
      lib/mine/mine_view/mine_order.dart
  59. 94
      lib/mine/mine_view/mine_view.dart
  60. 63
      lib/mine/mine_view/wallet_coupon_view.dart
  61. 3
      lib/mine/user_info_page.dart
  62. 2
      lib/order/order_detail_page.dart
  63. 65
      lib/order/order_history_page.dart
  64. 2
      lib/retrofit/data/coupon.dart
  65. 2
      lib/retrofit/data/store.dart
  66. 23
      lib/retrofit/retrofit_api.dart
  67. 16
      lib/setting/permission_setting_page.dart
  68. 1
      lib/union/union_details_page.dart
  69. 9
      lib/union/union_page.dart
  70. 2
      lib/utils/flutter_utils.dart
  71. 1
      lib/utils/min.dart
  72. 2
      lib/view_widget/custom_image.dart
  73. 1
      lib/view_widget/hot_item.dart
  74. 67
      lib/view_widget/mine_vip_view.dart
  75. 62
      lib/view_widget/new_coupon_widget.dart
  76. 49
      lib/web/web_view/web_content.dart

BIN
assets/image/2x/icon_location_address.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
assets/image/2x/icon_mine_card.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 743 B

BIN
assets/image/2x/icon_mine_edit.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
assets/image/2x/icon_mine_invoice_assistant.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 706 B

After

Width:  |  Height:  |  Size: 5.5 KiB

BIN
assets/image/2x/icon_mine_order_dfk.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 642 B

BIN
assets/image/2x/icon_mine_order_qb.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
assets/image/2x/icon_mine_order_wwc.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
assets/image/2x/icon_mine_order_ywc.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
assets/image/2x/icon_mine_records_of_consumption.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 523 B

After

Width:  |  Height:  |  Size: 637 B

BIN
assets/image/2x/icon_mine_setting.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
assets/image/2x/icon_mine_wallet.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 559 B

After

Width:  |  Height:  |  Size: 2.5 KiB

BIN
assets/image/2x/icon_scan_qr_code.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 432 B

After

Width:  |  Height:  |  Size: 368 B

BIN
assets/image/2x/icon_user.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
assets/image/3x/icon_location_address.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
assets/image/3x/icon_mine_card.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
assets/image/3x/icon_mine_edit.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
assets/image/3x/icon_mine_invoice_assistant.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 10 KiB

BIN
assets/image/3x/icon_mine_order_dfk.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
assets/image/3x/icon_mine_order_qb.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
assets/image/3x/icon_mine_order_wwc.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
assets/image/3x/icon_mine_order_ywc.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

BIN
assets/image/3x/icon_mine_records_of_consumption.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 866 B

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
assets/image/3x/icon_mine_setting.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
assets/image/3x/icon_mine_wallet.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 978 B

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
assets/image/3x/icon_scan_qr_code.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 655 B

After

Width:  |  Height:  |  Size: 588 B

BIN
assets/image/3x/icon_user.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

BIN
assets/image/icon_location_address.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 706 B

After

Width:  |  Height:  |  Size: 1022 B

BIN
assets/image/icon_mine_card.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 875 B

After

Width:  |  Height:  |  Size: 400 B

BIN
assets/image/icon_mine_edit.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

BIN
assets/image/icon_mine_invoice_assistant.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 375 B

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
assets/image/icon_mine_order_dfk.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 B

BIN
assets/image/icon_mine_order_qb.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 706 B

BIN
assets/image/icon_mine_order_wwc.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 625 B

BIN
assets/image/icon_mine_order_ywc.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 700 B

BIN
assets/image/icon_mine_records_of_consumption.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 268 B

After

Width:  |  Height:  |  Size: 318 B

BIN
assets/image/icon_mine_setting.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 798 B

After

Width:  |  Height:  |  Size: 820 B

BIN
assets/image/icon_mine_wallet.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 275 B

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
assets/image/icon_scan_qr_code.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 223 B

After

Width:  |  Height:  |  Size: 206 B

BIN
assets/image/icon_user.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 659 B

After

Width:  |  Height:  |  Size: 865 B

12
ios/Podfile.lock

@ -26,9 +26,10 @@ PODS:
- flutter_bmflocation (1.0.3):
- BMKLocationKit
- Flutter
- flutter_qr_reader (0.0.1):
- Flutter
- fluwx (0.0.1):
- Flutter
- WechatOpenSDK (= 1.8.7.1)
- FMDB (2.7.5):
- FMDB/standard (= 2.7.5)
- FMDB/standard (2.7.5)
@ -95,7 +96,6 @@ PODS:
- Flutter
- webview_flutter (0.0.1):
- Flutter
- WechatOpenSDK (1.8.7.1)
DEPENDENCIES:
- Flutter (from `Flutter`)
@ -104,6 +104,7 @@ DEPENDENCIES:
- flutter_baidu_mapapi_search (from `.symlinks/plugins/flutter_baidu_mapapi_search/ios`)
- flutter_baidu_mapapi_utils (from `.symlinks/plugins/flutter_baidu_mapapi_utils/ios`)
- flutter_bmflocation (from `.symlinks/plugins/flutter_bmflocation/ios`)
- flutter_qr_reader (from `.symlinks/plugins/flutter_qr_reader/ios`)
- fluwx (from `.symlinks/plugins/fluwx/ios`)
- image_cropper (from `.symlinks/plugins/image_cropper/ios`)
- image_picker (from `.symlinks/plugins/image_picker/ios`)
@ -130,7 +131,6 @@ SPEC REPOS:
- SSZipArchive
- TOCropViewController
- TPNS-iOS
- WechatOpenSDK
EXTERNAL SOURCES:
Flutter:
@ -145,6 +145,8 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/flutter_baidu_mapapi_utils/ios"
flutter_bmflocation:
:path: ".symlinks/plugins/flutter_bmflocation/ios"
flutter_qr_reader:
:path: ".symlinks/plugins/flutter_qr_reader/ios"
fluwx:
:path: ".symlinks/plugins/fluwx/ios"
image_cropper:
@ -183,7 +185,8 @@ SPEC CHECKSUMS:
flutter_baidu_mapapi_search: 4cffaa74e739a4114595c4f82f790e1783bb612d
flutter_baidu_mapapi_utils: a5bd582b91ecd35be1bc45558b38f49d5684f70a
flutter_bmflocation: 12f1ba91bae4b16d78d4f475023e0254ed351f1c
fluwx: 07a55ed66bf3a4961e836a2a411b02dcada32902
flutter_qr_reader: d930dde3b2cfe2b3d0bb7d66e5ff3e514300a5e5
fluwx: c64c2b84b965279aaa251a80b5b6a1cd0ef7bd45
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
image_cropper: f1668dd8d2cad2d357955caad15a40547856edcb
image_picker: 9c3312491f862b28d21ecd8fdf0ee14e601b3f09
@ -203,7 +206,6 @@ SPEC CHECKSUMS:
video_player: 9cc823b1d9da7e8427ee591e8438bfbcde500e6e
wakelock: bfc7955c418d0db797614075aabbc58a39ab5107
webview_flutter: d2b4d6c66968ad042ad94cbb791f5b72b4678a96
WechatOpenSDK: 6a4d1436c15b3b5fe2a0bd383f3046010186da44
PODFILE CHECKSUM: 7092aa3092b9508e0ccea9e76cd5fa33505dbb46

8
lib/generated/intl/messages_en.dart

@ -310,9 +310,12 @@ class MessageLookup extends MessageLookupByLibrary {
"morenpaixu" : MessageLookupByLibrary.simpleMessage("默认排序"),
"muqianzanwuxingdianhuodong" : MessageLookupByLibrary.simpleMessage("目前暂无星店活动"),
"nihaimeiyouchongzhihuoxiaofeijilu" : MessageLookupByLibrary.simpleMessage("你在这儿还没有消费或充值记录哦~"),
"nincunchuquanxianweikaiqi" : MessageLookupByLibrary.simpleMessage("您未开启存储权限,请点击开启"),
"nindingweigongnengweikaiqi" : MessageLookupByLibrary.simpleMessage("您定位功能开关未开启,请点击去打開定位"),
"nindingweiquanxianweiyunxu" : MessageLookupByLibrary.simpleMessage("您未开启位置权限,请点击确定申请权限"),
"ninweidenglu" : MessageLookupByLibrary.simpleMessage("您未登录,请点击去登录"),
"ninxiangjiquanxianweikaiqi" : MessageLookupByLibrary.simpleMessage("您未开启相机权限,请点击开启"),
"ninxiaoxiquanxianweikaiqi" : MessageLookupByLibrary.simpleMessage("您未开启消息通知权限,请点击开启"),
"ninyilianxuqiandaotian" : m20,
"ninyouyigedingdanyaolingqu" : MessageLookupByLibrary.simpleMessage("您有一个订单需要前往门店领取"),
"ninyouyigexindedingdan" : MessageLookupByLibrary.simpleMessage("您有一个新的订单"),
@ -462,7 +465,10 @@ class MessageLookup extends MessageLookupByLibrary {
"weihexiao" : MessageLookupByLibrary.simpleMessage("未核销"),
"weikaiqi" : MessageLookupByLibrary.simpleMessage("未开启"),
"weilegeiningenghaodefuwu" : MessageLookupByLibrary.simpleMessage("为了给您提供更好的服务,以及享受更加精彩的信息内容,请您在使用期间,进行登录"),
"weilejishishoudaohuodongxiaoxi" : MessageLookupByLibrary.simpleMessage("为了您可以及时收到我们的活动信息,请您开启消息通知权限"),
"weilekaipaizhaoxuanzhetouxiang" : MessageLookupByLibrary.simpleMessage("为了您可以在使用过程中更换头像,请您开启相机使用权限"),
"weilexiangnintuijianfujindemendianxinxi" : MessageLookupByLibrary.simpleMessage("为了向您推荐附近的门店信息,推荐您在使用期间让我们使用位置信息"),
"weilexuanzhezhaopianhuancun" : MessageLookupByLibrary.simpleMessage("为了获得照片使用,缓存等功能,推荐您在使用期间打开存储权限"),
"weiwancheng" : MessageLookupByLibrary.simpleMessage(" 未完成 "),
"weixinzhifu" : MessageLookupByLibrary.simpleMessage("微信支付"),
"weizhitishixinxi" : MessageLookupByLibrary.simpleMessage("为了向您推荐附近的门店信息,推荐您在使用HISAPP时让我们使用位置信息"),
@ -472,6 +478,7 @@ class MessageLookup extends MessageLookupByLibrary {
"weulingqu" : MessageLookupByLibrary.simpleMessage("未领取"),
"wodehuiyuandengji" : MessageLookupByLibrary.simpleMessage("我的会员等级"),
"wodejifenzhi" : MessageLookupByLibrary.simpleMessage("我的积分值"),
"wodekaquan" : MessageLookupByLibrary.simpleMessage("我的卡券"),
"wodenianling" : MessageLookupByLibrary.simpleMessage("我的年龄"),
"wodeqianbao" : MessageLookupByLibrary.simpleMessage("我的钱包"),
"wodeshengri" : MessageLookupByLibrary.simpleMessage("我的生日"),
@ -489,6 +496,7 @@ class MessageLookup extends MessageLookupByLibrary {
"xiangqing" : MessageLookupByLibrary.simpleMessage("详情"),
"xiangxidizhi" : MessageLookupByLibrary.simpleMessage("详细地址"),
"xianshangfafang" : MessageLookupByLibrary.simpleMessage("线上发放"),
"xianshangshiyong" : MessageLookupByLibrary.simpleMessage("线上使用"),
"xianxiashiyong" : MessageLookupByLibrary.simpleMessage("线下使用"),
"xiaofei" : MessageLookupByLibrary.simpleMessage("消费"),
"xiaofeijifen" : MessageLookupByLibrary.simpleMessage("消费积分"),

8
lib/generated/intl/messages_zh_CN.dart

@ -309,9 +309,12 @@ class MessageLookup extends MessageLookupByLibrary {
"morenpaixu" : MessageLookupByLibrary.simpleMessage("默认排序"),
"muqianzanwuxingdianhuodong" : MessageLookupByLibrary.simpleMessage("目前暂无星店活动"),
"nihaimeiyouchongzhihuoxiaofeijilu" : MessageLookupByLibrary.simpleMessage("你在这儿还没有消费或充值记录哦~"),
"nincunchuquanxianweikaiqi" : MessageLookupByLibrary.simpleMessage("您未开启存储权限,请点击开启"),
"nindingweigongnengweikaiqi" : MessageLookupByLibrary.simpleMessage("您定位功能开关未开启,请点击去打開定位"),
"nindingweiquanxianweiyunxu" : MessageLookupByLibrary.simpleMessage("您未开启位置权限,请点击确定申请权限"),
"ninweidenglu" : MessageLookupByLibrary.simpleMessage("您未登录,请点击去登录"),
"ninxiangjiquanxianweikaiqi" : MessageLookupByLibrary.simpleMessage("您未开启相机权限,请点击开启"),
"ninxiaoxiquanxianweikaiqi" : MessageLookupByLibrary.simpleMessage("您未开启消息通知权限,请点击开启"),
"ninyilianxuqiandaotian" : m20,
"ninyouyigedingdanyaolingqu" : MessageLookupByLibrary.simpleMessage("您有一个订单需要前往门店领取"),
"ninyouyigexindedingdan" : MessageLookupByLibrary.simpleMessage("您有一个新的订单"),
@ -461,7 +464,10 @@ class MessageLookup extends MessageLookupByLibrary {
"weihexiao" : MessageLookupByLibrary.simpleMessage("未核销"),
"weikaiqi" : MessageLookupByLibrary.simpleMessage("未开启"),
"weilegeiningenghaodefuwu" : MessageLookupByLibrary.simpleMessage("为了给您提供更好的服务,以及享受更加精彩的信息内容,请您在使用期间,进行登录"),
"weilejishishoudaohuodongxiaoxi" : MessageLookupByLibrary.simpleMessage("为了您可以及时收到我们的活动信息,请您开启消息通知权限"),
"weilekaipaizhaoxuanzhetouxiang" : MessageLookupByLibrary.simpleMessage("为了您可以在使用过程中更换头像,请您开启相机使用权限"),
"weilexiangnintuijianfujindemendianxinxi" : MessageLookupByLibrary.simpleMessage("为了向您推荐附近的门店信息,推荐您在使用期间让我们使用位置信息"),
"weilexuanzhezhaopianhuancun" : MessageLookupByLibrary.simpleMessage("为了获得照片使用,缓存等功能,推荐您在使用期间打开存储权限"),
"weiwancheng" : MessageLookupByLibrary.simpleMessage(" 未完成 "),
"weixinzhifu" : MessageLookupByLibrary.simpleMessage("微信支付"),
"weizhitishixinxi" : MessageLookupByLibrary.simpleMessage("为了向您推荐附近的门店信息,推荐您在使用HISAPP时让我们使用位置信息"),
@ -471,6 +477,7 @@ class MessageLookup extends MessageLookupByLibrary {
"weulingqu" : MessageLookupByLibrary.simpleMessage("未领取"),
"wodehuiyuandengji" : MessageLookupByLibrary.simpleMessage("我的会员等级"),
"wodejifenzhi" : MessageLookupByLibrary.simpleMessage("我的积分值"),
"wodekaquan" : MessageLookupByLibrary.simpleMessage("我的卡券"),
"wodenianling" : MessageLookupByLibrary.simpleMessage("我的年龄"),
"wodeqianbao" : MessageLookupByLibrary.simpleMessage("我的钱包"),
"wodeshengri" : MessageLookupByLibrary.simpleMessage("我的生日"),
@ -488,6 +495,7 @@ class MessageLookup extends MessageLookupByLibrary {
"xiangqing" : MessageLookupByLibrary.simpleMessage("详情"),
"xiangxidizhi" : MessageLookupByLibrary.simpleMessage("详细地址"),
"xianshangfafang" : MessageLookupByLibrary.simpleMessage("线上发放"),
"xianshangshiyong" : MessageLookupByLibrary.simpleMessage("线上使用"),
"xianxiashiyong" : MessageLookupByLibrary.simpleMessage("线下使用"),
"xiaofei" : MessageLookupByLibrary.simpleMessage("消费"),
"xiaofeijifen" : MessageLookupByLibrary.simpleMessage("消费积分"),

8
lib/generated/intl/messages_zh_Hans_CN.dart

@ -309,9 +309,12 @@ class MessageLookup extends MessageLookupByLibrary {
"morenpaixu" : MessageLookupByLibrary.simpleMessage("默认排序"),
"muqianzanwuxingdianhuodong" : MessageLookupByLibrary.simpleMessage("目前暂无星店活动"),
"nihaimeiyouchongzhihuoxiaofeijilu" : MessageLookupByLibrary.simpleMessage("你在这儿还没有消费或充值记录哦~"),
"nincunchuquanxianweikaiqi" : MessageLookupByLibrary.simpleMessage("您未开启存储权限,请点击开启"),
"nindingweigongnengweikaiqi" : MessageLookupByLibrary.simpleMessage("您定位功能开关未开启,请点击去打開定位"),
"nindingweiquanxianweiyunxu" : MessageLookupByLibrary.simpleMessage("您未开启位置权限,请点击确定申请权限"),
"ninweidenglu" : MessageLookupByLibrary.simpleMessage("您未登录,请点击去登录"),
"ninxiangjiquanxianweikaiqi" : MessageLookupByLibrary.simpleMessage("您未开启相机权限,请点击开启"),
"ninxiaoxiquanxianweikaiqi" : MessageLookupByLibrary.simpleMessage("您未开启消息通知权限,请点击开启"),
"ninyilianxuqiandaotian" : m20,
"ninyouyigedingdanyaolingqu" : MessageLookupByLibrary.simpleMessage("您有一个订单需要前往门店领取"),
"ninyouyigexindedingdan" : MessageLookupByLibrary.simpleMessage("您有一个新的订单"),
@ -461,7 +464,10 @@ class MessageLookup extends MessageLookupByLibrary {
"weihexiao" : MessageLookupByLibrary.simpleMessage("未核销"),
"weikaiqi" : MessageLookupByLibrary.simpleMessage("未开启"),
"weilegeiningenghaodefuwu" : MessageLookupByLibrary.simpleMessage("为了给您提供更好的服务,以及享受更加精彩的信息内容,请您在使用期间,进行登录"),
"weilejishishoudaohuodongxiaoxi" : MessageLookupByLibrary.simpleMessage("为了您可以及时收到我们的活动信息,请您开启消息通知权限"),
"weilekaipaizhaoxuanzhetouxiang" : MessageLookupByLibrary.simpleMessage("为了您可以在使用过程中更换头像,请您开启相机使用权限"),
"weilexiangnintuijianfujindemendianxinxi" : MessageLookupByLibrary.simpleMessage("为了向您推荐附近的门店信息,推荐您在使用期间让我们使用位置信息"),
"weilexuanzhezhaopianhuancun" : MessageLookupByLibrary.simpleMessage("为了获得照片使用,缓存等功能,推荐您在使用期间打开存储权限"),
"weiwancheng" : MessageLookupByLibrary.simpleMessage(" 未完成 "),
"weixinzhifu" : MessageLookupByLibrary.simpleMessage("微信支付"),
"weizhitishixinxi" : MessageLookupByLibrary.simpleMessage("为了向您推荐附近的门店信息,推荐您在使用HISAPP时让我们使用位置信息"),
@ -471,6 +477,7 @@ class MessageLookup extends MessageLookupByLibrary {
"weulingqu" : MessageLookupByLibrary.simpleMessage("未领取"),
"wodehuiyuandengji" : MessageLookupByLibrary.simpleMessage("我的会员等级"),
"wodejifenzhi" : MessageLookupByLibrary.simpleMessage("我的积分值"),
"wodekaquan" : MessageLookupByLibrary.simpleMessage("我的卡券"),
"wodenianling" : MessageLookupByLibrary.simpleMessage("我的年龄"),
"wodeqianbao" : MessageLookupByLibrary.simpleMessage("我的钱包"),
"wodeshengri" : MessageLookupByLibrary.simpleMessage("我的生日"),
@ -488,6 +495,7 @@ class MessageLookup extends MessageLookupByLibrary {
"xiangqing" : MessageLookupByLibrary.simpleMessage("详情"),
"xiangxidizhi" : MessageLookupByLibrary.simpleMessage("详细地址"),
"xianshangfafang" : MessageLookupByLibrary.simpleMessage("线上发放"),
"xianshangshiyong" : MessageLookupByLibrary.simpleMessage("线上使用"),
"xianxiashiyong" : MessageLookupByLibrary.simpleMessage("线下使用"),
"xiaofei" : MessageLookupByLibrary.simpleMessage("消费"),
"xiaofeijifen" : MessageLookupByLibrary.simpleMessage("消费积分"),

8
lib/generated/intl/messages_zh_Hant_CN.dart

@ -309,9 +309,12 @@ class MessageLookup extends MessageLookupByLibrary {
"morenpaixu" : MessageLookupByLibrary.simpleMessage("默認排序"),
"muqianzanwuxingdianhuodong" : MessageLookupByLibrary.simpleMessage("目前暫無星店活動"),
"nihaimeiyouchongzhihuoxiaofeijilu" : MessageLookupByLibrary.simpleMessage("你在這兒還沒有消費或充值紀錄喔~"),
"nincunchuquanxianweikaiqi" : MessageLookupByLibrary.simpleMessage("您未开启存储权限,请点击开启"),
"nindingweigongnengweikaiqi" : MessageLookupByLibrary.simpleMessage("您定位功能開關未開啟,請點擊去開啟定位"),
"nindingweiquanxianweiyunxu" : MessageLookupByLibrary.simpleMessage("您未开启位置权限,请点击确定申请权限"),
"ninweidenglu" : MessageLookupByLibrary.simpleMessage("您未登錄,請點擊去登錄"),
"ninxiangjiquanxianweikaiqi" : MessageLookupByLibrary.simpleMessage("您未开启相机权限,请点击开启"),
"ninxiaoxiquanxianweikaiqi" : MessageLookupByLibrary.simpleMessage("您未开启消息通知权限,请点击开启"),
"ninyilianxuqiandaotian" : m20,
"ninyouyigedingdanyaolingqu" : MessageLookupByLibrary.simpleMessage("您有一個訂單需要前往門店領取"),
"ninyouyigexindedingdan" : MessageLookupByLibrary.simpleMessage("您有一個新訂單"),
@ -461,7 +464,10 @@ class MessageLookup extends MessageLookupByLibrary {
"weihexiao" : MessageLookupByLibrary.simpleMessage("未核銷"),
"weikaiqi" : MessageLookupByLibrary.simpleMessage("未開啓"),
"weilegeiningenghaodefuwu" : MessageLookupByLibrary.simpleMessage("為了給您提供更好的服務,以及享受更加精彩的信息內容,請在使用使用期間登錄"),
"weilejishishoudaohuodongxiaoxi" : MessageLookupByLibrary.simpleMessage("为了您可以及时收到我们的活动信息,请您开启消息通知权限"),
"weilekaipaizhaoxuanzhetouxiang" : MessageLookupByLibrary.simpleMessage("为了您可以在使用过程中更换头像,请您开启相机使用权限"),
"weilexiangnintuijianfujindemendianxinxi" : MessageLookupByLibrary.simpleMessage("為了向您推薦附近的門店信息,推薦您在使用期間讓我們使用位置信息"),
"weilexuanzhezhaopianhuancun" : MessageLookupByLibrary.simpleMessage("为了获得照片使用,缓存等功能,推荐您在使用期间打开存储权限"),
"weiwancheng" : MessageLookupByLibrary.simpleMessage(" 未完成 "),
"weixinzhifu" : MessageLookupByLibrary.simpleMessage("微信支付"),
"weizhitishixinxi" : MessageLookupByLibrary.simpleMessage("為了向您推薦附近的門店資訊,推薦您在使用HISAPP時讓我們使用位置資訊"),
@ -471,6 +477,7 @@ class MessageLookup extends MessageLookupByLibrary {
"weulingqu" : MessageLookupByLibrary.simpleMessage("未領取"),
"wodehuiyuandengji" : MessageLookupByLibrary.simpleMessage("我的會員等級"),
"wodejifenzhi" : MessageLookupByLibrary.simpleMessage("我的積分值"),
"wodekaquan" : MessageLookupByLibrary.simpleMessage("我的卡券"),
"wodenianling" : MessageLookupByLibrary.simpleMessage("我的年齡"),
"wodeqianbao" : MessageLookupByLibrary.simpleMessage("我的錢包"),
"wodeshengri" : MessageLookupByLibrary.simpleMessage("我的生日"),
@ -488,6 +495,7 @@ class MessageLookup extends MessageLookupByLibrary {
"xiangqing" : MessageLookupByLibrary.simpleMessage("詳情"),
"xiangxidizhi" : MessageLookupByLibrary.simpleMessage("詳細地址"),
"xianshangfafang" : MessageLookupByLibrary.simpleMessage("綫上發放"),
"xianshangshiyong" : MessageLookupByLibrary.simpleMessage("線上使用"),
"xianxiashiyong" : MessageLookupByLibrary.simpleMessage("線下使用"),
"xiaofei" : MessageLookupByLibrary.simpleMessage("消費"),
"xiaofeijifen" : MessageLookupByLibrary.simpleMessage("消费积分"),

8
lib/generated/intl/messages_zh_TW.dart

@ -309,9 +309,12 @@ class MessageLookup extends MessageLookupByLibrary {
"morenpaixu" : MessageLookupByLibrary.simpleMessage("默認排序"),
"muqianzanwuxingdianhuodong" : MessageLookupByLibrary.simpleMessage("目前暫無星店活動"),
"nihaimeiyouchongzhihuoxiaofeijilu" : MessageLookupByLibrary.simpleMessage("你在這兒還沒有消費或充值紀錄喔~"),
"nincunchuquanxianweikaiqi" : MessageLookupByLibrary.simpleMessage("您未开启存储权限,请点击开启"),
"nindingweigongnengweikaiqi" : MessageLookupByLibrary.simpleMessage("您定位功能開關未開啟,請點擊去開啟定位"),
"nindingweiquanxianweiyunxu" : MessageLookupByLibrary.simpleMessage("您未开启位置权限,请点击确定申请权限"),
"ninweidenglu" : MessageLookupByLibrary.simpleMessage("您未登錄,請點擊去登錄"),
"ninxiangjiquanxianweikaiqi" : MessageLookupByLibrary.simpleMessage("您未开启相机权限,请点击开启"),
"ninxiaoxiquanxianweikaiqi" : MessageLookupByLibrary.simpleMessage("您未开启消息通知权限,请点击开启"),
"ninyilianxuqiandaotian" : m20,
"ninyouyigedingdanyaolingqu" : MessageLookupByLibrary.simpleMessage("您有一個訂單需要前往門店領取"),
"ninyouyigexindedingdan" : MessageLookupByLibrary.simpleMessage("您有一個新訂單"),
@ -461,7 +464,10 @@ class MessageLookup extends MessageLookupByLibrary {
"weihexiao" : MessageLookupByLibrary.simpleMessage("未核銷"),
"weikaiqi" : MessageLookupByLibrary.simpleMessage("未開啓"),
"weilegeiningenghaodefuwu" : MessageLookupByLibrary.simpleMessage("為了給您提供更好的服務,以及享受更加精彩的信息內容,請在使用使用期間登錄"),
"weilejishishoudaohuodongxiaoxi" : MessageLookupByLibrary.simpleMessage("为了您可以及时收到我们的活动信息,请您开启消息通知权限"),
"weilekaipaizhaoxuanzhetouxiang" : MessageLookupByLibrary.simpleMessage("为了您可以在使用过程中更换头像,请您开启相机使用权限"),
"weilexiangnintuijianfujindemendianxinxi" : MessageLookupByLibrary.simpleMessage("為了向您推薦附近的門店信息,推薦您在使用期間讓我們使用位置信息"),
"weilexuanzhezhaopianhuancun" : MessageLookupByLibrary.simpleMessage("为了获得照片使用,缓存等功能,推荐您在使用期间打开存储权限"),
"weiwancheng" : MessageLookupByLibrary.simpleMessage(" 未完成 "),
"weixinzhifu" : MessageLookupByLibrary.simpleMessage("微信支付"),
"weizhitishixinxi" : MessageLookupByLibrary.simpleMessage("為了向您推薦附近的門店資訊,推薦您在使用HISAPP時讓我們使用位置資訊"),
@ -471,6 +477,7 @@ class MessageLookup extends MessageLookupByLibrary {
"weulingqu" : MessageLookupByLibrary.simpleMessage("未領取"),
"wodehuiyuandengji" : MessageLookupByLibrary.simpleMessage("我的會員等級"),
"wodejifenzhi" : MessageLookupByLibrary.simpleMessage("我的積分值"),
"wodekaquan" : MessageLookupByLibrary.simpleMessage("我的卡券"),
"wodenianling" : MessageLookupByLibrary.simpleMessage("我的年齡"),
"wodeqianbao" : MessageLookupByLibrary.simpleMessage("我的錢包"),
"wodeshengri" : MessageLookupByLibrary.simpleMessage("我的生日"),
@ -488,6 +495,7 @@ class MessageLookup extends MessageLookupByLibrary {
"xiangqing" : MessageLookupByLibrary.simpleMessage("詳情"),
"xiangxidizhi" : MessageLookupByLibrary.simpleMessage("詳細地址"),
"xianshangfafang" : MessageLookupByLibrary.simpleMessage("綫上發放"),
"xianshangshiyong" : MessageLookupByLibrary.simpleMessage("線上使用"),
"xianxiashiyong" : MessageLookupByLibrary.simpleMessage("線下使用"),
"xiaofei" : MessageLookupByLibrary.simpleMessage("消費"),
"xiaofeijifen" : MessageLookupByLibrary.simpleMessage("消费积分"),

80
lib/generated/l10n.dart

@ -2695,6 +2695,16 @@ class S {
);
}
/// ``
String get wodekaquan {
return Intl.message(
'我的卡券',
name: 'wodekaquan',
desc: '',
args: [],
);
}
/// ``
String get guanlidizhi {
return Intl.message(
@ -3475,6 +3485,66 @@ class S {
);
}
/// ``
String get ninxiaoxiquanxianweikaiqi {
return Intl.message(
'您未开启消息通知权限,请点击开启',
name: 'ninxiaoxiquanxianweikaiqi',
desc: '',
args: [],
);
}
/// ``
String get ninxiangjiquanxianweikaiqi {
return Intl.message(
'您未开启相机权限,请点击开启',
name: 'ninxiangjiquanxianweikaiqi',
desc: '',
args: [],
);
}
/// ``
String get nincunchuquanxianweikaiqi {
return Intl.message(
'您未开启存储权限,请点击开启',
name: 'nincunchuquanxianweikaiqi',
desc: '',
args: [],
);
}
/// ``
String get weilejishishoudaohuodongxiaoxi {
return Intl.message(
'为了您可以及时收到我们的活动信息,请您开启消息通知权限',
name: 'weilejishishoudaohuodongxiaoxi',
desc: '',
args: [],
);
}
/// `使使`
String get weilekaipaizhaoxuanzhetouxiang {
return Intl.message(
'为了您可以在使用过程中更换头像,请您开启相机使用权限',
name: 'weilekaipaizhaoxuanzhetouxiang',
desc: '',
args: [],
);
}
/// `使使`
String get weilexuanzhezhaopianhuancun {
return Intl.message(
'为了获得照片使用,缓存等功能,推荐您在使用期间打开存储权限',
name: 'weilexuanzhezhaopianhuancun',
desc: '',
args: [],
);
}
/// ``
String get dengdaishangjiaqueren {
return Intl.message(
@ -3885,6 +3955,16 @@ class S {
);
}
/// `线使`
String get xianshangshiyong {
return Intl.message(
'线上使用',
name: 'xianshangshiyong',
desc: '',
args: [],
);
}
/// ``
String get duihuanquan {
return Intl.message(

3
lib/home/home_page.dart

@ -127,7 +127,8 @@ class _HomePage extends State<HomePage> with AutomaticKeepAliveClientMixin {
@override
void dispose() {
super.dispose();
refreshController.dispose();
if (refreshController != null)
refreshController.dispose();
}
final RefreshController refreshController = RefreshController();

48
lib/home/huixiang_view/origin_info.dart

@ -70,25 +70,27 @@ class _OriginInfo extends State<OriginInfo> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text.rich(
TextSpan(children: [
TextSpan(
text: widget.brandData == null
? ""
: widget.brandData.originator,
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 14.sp,
color: Colors.black,
TextSpan(
children: [
TextSpan(
text: widget.brandData == null
? ""
: widget.brandData.originator,
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 14.sp,
color: Colors.black,
),
),
),
TextSpan(
text: " ${S.of(context).jituanchuangbanren}",
style: TextStyle(
fontSize: 10.sp,
color: Colors.black,
TextSpan(
text: " ${S.of(context).jituanchuangbanren}",
style: TextStyle(
fontSize: 10.sp,
color: Colors.black,
),
),
),
]),
],
),
textDirection: TextDirection.ltr,
),
Text(
@ -225,15 +227,21 @@ class _OriginInfo extends State<OriginInfo> {
alignment: Alignment.center,
children: [
Container(
width: 63.w,
width: 63.h,
height: 63.h,
child: Stack(
alignment: Alignment.center,
children: [
Align(
child: CircleAvatar(
child: Image.asset(img),
radius: 100,
backgroundColor: Colors.white,
child: Image.asset(
img,
width: 63.h,
height: 63.h,
fit: BoxFit.fill,
),
radius: 32.h,
),
),
Text(

8
lib/l10n/intl_en.arb

@ -267,6 +267,7 @@
"linian": "理念",
"jingbilianmenghuiyuandian": "净弼联盟会员店",
"kaquan": "卡券",
"wodekaquan": "我的卡券",
"guanlidizhi": "管理地址",
"lingquanzhongxin": "领券中心",
"lianxishoujihao": "联系手机号",
@ -360,6 +361,12 @@
"nindingweigongnengweikaiqi": "您定位功能开关未开启,请点击去打開定位",
"nindingweiquanxianweiyunxu": "您未开启位置权限,请点击确定申请权限",
"weilexiangnintuijianfujindemendianxinxi": "为了向您推荐附近的门店信息,推荐您在使用期间让我们使用位置信息",
"ninxiaoxiquanxianweikaiqi": "您未开启消息通知权限,请点击开启",
"ninxiangjiquanxianweikaiqi": "您未开启相机权限,请点击开启",
"nincunchuquanxianweikaiqi": "您未开启存储权限,请点击开启",
"weilejishishoudaohuodongxiaoxi": "为了您可以及时收到我们的活动信息,请您开启消息通知权限",
"weilekaipaizhaoxuanzhetouxiang": "为了您可以在使用过程中更换头像,请您开启相机使用权限",
"weilexuanzhezhaopianhuancun": "为了获得照片使用,缓存等功能,推荐您在使用期间打开存储权限",
"dengdaishangjiaqueren": "等待商家确认",
"dingdandaifahuo": "订单待发货",
"gengduo": "更多",
@ -402,6 +409,7 @@
"paizhao": "拍照",
"xiangce": "相册",
"xianxiashiyong": "线下使用",
"xianshangshiyong": "线上使用",
"duihuanquan": "兑换券",
"quhexiao": "去核销",
"biaojiweiyidu": "标为已读",

8
lib/l10n/intl_zh_CN.arb

@ -267,6 +267,7 @@
"linian": "理念",
"jingbilianmenghuiyuandian": "净弼联盟会员店",
"kaquan": "卡券",
"wodekaquan": "我的卡券",
"guanlidizhi": "管理地址",
"lingquanzhongxin": "领券中心",
"lianxishoujihao": "联系手机号",
@ -362,6 +363,12 @@
"nindingweigongnengweikaiqi": "您定位功能开关未开启,请点击去打開定位",
"nindingweiquanxianweiyunxu": "您未开启位置权限,请点击确定申请权限",
"weilexiangnintuijianfujindemendianxinxi": "为了向您推荐附近的门店信息,推荐您在使用期间让我们使用位置信息",
"ninxiaoxiquanxianweikaiqi": "您未开启消息通知权限,请点击开启",
"ninxiangjiquanxianweikaiqi": "您未开启相机权限,请点击开启",
"nincunchuquanxianweikaiqi": "您未开启存储权限,请点击开启",
"weilejishishoudaohuodongxiaoxi": "为了您可以及时收到我们的活动信息,请您开启消息通知权限",
"weilekaipaizhaoxuanzhetouxiang": "为了您可以在使用过程中更换头像,请您开启相机使用权限",
"weilexuanzhezhaopianhuancun": "为了获得照片使用,缓存等功能,推荐您在使用期间打开存储权限",
"dengdaishangjiaqueren": "等待商家确认",
"dingdandaifahuo": "订单待发货",
"gengduo": "更多",
@ -403,6 +410,7 @@
"paizhao": "拍照",
"xiangce": "相册",
"xianxiashiyong": "线下使用",
"xianshangshiyong": "线上使用",
"duihuanquan": "兑换券",
"quhexiao": "去核销",
"biaojiweiyidu": "标为已读",

8
lib/l10n/intl_zh_Hans_CN.arb

@ -267,6 +267,7 @@
"linian": "理念",
"jingbilianmenghuiyuandian": "净弼联盟会员店",
"kaquan": "卡券",
"wodekaquan": "我的卡券",
"guanlidizhi": "管理地址",
"lingquanzhongxin": "领券中心",
"lianxishoujihao": "联系手机号",
@ -362,6 +363,12 @@
"nindingweigongnengweikaiqi": "您定位功能开关未开启,请点击去打開定位",
"nindingweiquanxianweiyunxu": "您未开启位置权限,请点击确定申请权限",
"weilexiangnintuijianfujindemendianxinxi": "为了向您推荐附近的门店信息,推荐您在使用期间让我们使用位置信息",
"ninxiaoxiquanxianweikaiqi": "您未开启消息通知权限,请点击开启",
"ninxiangjiquanxianweikaiqi": "您未开启相机权限,请点击开启",
"nincunchuquanxianweikaiqi": "您未开启存储权限,请点击开启",
"weilejishishoudaohuodongxiaoxi": "为了您可以及时收到我们的活动信息,请您开启消息通知权限",
"weilekaipaizhaoxuanzhetouxiang": "为了您可以在使用过程中更换头像,请您开启相机使用权限",
"weilexuanzhezhaopianhuancun": "为了获得照片使用,缓存等功能,推荐您在使用期间打开存储权限",
"dengdaishangjiaqueren": "等待商家确认",
"dingdandaifahuo": "订单待发货",
"gengduo": "更多",
@ -403,6 +410,7 @@
"paizhao": "拍照",
"xiangce": "相册",
"xianxiashiyong": "线下使用",
"xianshangshiyong": "线上使用",
"duihuanquan": "兑换券",
"quhexiao": "去核销",
"biaojiweiyidu": "标为已读",

9
lib/l10n/intl_zh_Hant_CN.arb

@ -260,6 +260,7 @@
"linian": "理念",
"jingbilianmenghuiyuandian": "淨弼聯盟會員店",
"kaquan": "卡券",
"wodekaquan": "我的卡券",
"guanlidizhi": "管理地址",
"lingquanzhongxin": "領券中心",
"lianxishoujihao": "聯繫手機號",
@ -354,6 +355,12 @@
"nindingweigongnengweikaiqi": "您定位功能開關未開啟,請點擊去開啟定位",
"nindingweiquanxianweiyunxu": "您未开启位置权限,请点击确定申请权限",
"weilexiangnintuijianfujindemendianxinxi": "為了向您推薦附近的門店信息,推薦您在使用期間讓我們使用位置信息",
"ninxiaoxiquanxianweikaiqi": "您未开启消息通知权限,请点击开启",
"ninxiangjiquanxianweikaiqi": "您未开启相机权限,请点击开启",
"nincunchuquanxianweikaiqi": "您未开启存储权限,请点击开启",
"weilejishishoudaohuodongxiaoxi": "为了您可以及时收到我们的活动信息,请您开启消息通知权限",
"weilekaipaizhaoxuanzhetouxiang": "为了您可以在使用过程中更换头像,请您开启相机使用权限",
"weilexuanzhezhaopianhuancun": "为了获得照片使用,缓存等功能,推荐您在使用期间打开存储权限",
"dengdaishangjiaqueren": "等待商家確認",
"dingdandaifahuo": "訂單待發貨",
"gengduo": "更多",
@ -395,6 +402,7 @@
"paizhao": "拍照",
"xiangce": "相冊",
"xianxiashiyong": "線下使用",
"xianshangshiyong": "線上使用",
"duihuanquan": "兌換券",
"quhexiao": "去核銷",
"biaojiweiyidu": "標為已讀",
@ -467,7 +475,6 @@
"ruhedihuanjifen1": "點擊淨弼,進入積分商城,點擊你想兌換的領商品,進入商品詳情後點擊下方兌換,即可兌換哦~",
"ruheqiandao": "如何簽到?",
"ruheqiandao1": "1.點擊淨弼,進入首頁,點擊上方的去簽到。\n2.點擊我的,進入我的頁面,點擊上方的積分詳情,進入後即可簽到。",
"youxiaoqixian": "有效期限:",
"changqiyouxiao": "長期有效",
"fasong": "發送",

8
lib/l10n/intl_zh_TW.arb

@ -260,6 +260,7 @@
"linian": "理念",
"jingbilianmenghuiyuandian": "淨弼聯盟會員店",
"kaquan": "卡券",
"wodekaquan": "我的卡券",
"guanlidizhi": "管理地址",
"lingquanzhongxin": "領券中心",
"lianxishoujihao": "聯繫手機號",
@ -354,6 +355,12 @@
"nindingweigongnengweikaiqi": "您定位功能開關未開啟,請點擊去開啟定位",
"nindingweiquanxianweiyunxu": "您未开启位置权限,请点击确定申请权限",
"weilexiangnintuijianfujindemendianxinxi": "為了向您推薦附近的門店信息,推薦您在使用期間讓我們使用位置信息",
"ninxiaoxiquanxianweikaiqi": "您未开启消息通知权限,请点击开启",
"ninxiangjiquanxianweikaiqi": "您未开启相机权限,请点击开启",
"nincunchuquanxianweikaiqi": "您未开启存储权限,请点击开启",
"weilejishishoudaohuodongxiaoxi": "为了您可以及时收到我们的活动信息,请您开启消息通知权限",
"weilekaipaizhaoxuanzhetouxiang": "为了您可以在使用过程中更换头像,请您开启相机使用权限",
"weilexuanzhezhaopianhuancun": "为了获得照片使用,缓存等功能,推荐您在使用期间打开存储权限",
"dengdaishangjiaqueren": "等待商家確認",
"dingdandaifahuo": "訂單待發貨",
"gengduo": "更多",
@ -395,6 +402,7 @@
"paizhao": "拍照",
"xiangce": "相冊",
"xianxiashiyong": "線下使用",
"xianshangshiyong": "線上使用",
"duihuanquan": "兌換券",
"quhexiao": "去核銷",
"biaojiweiyidu": "標為已讀",

46
lib/login/login_page.dart

@ -70,22 +70,53 @@ class _MyLoginPageState extends State<LoginPage> with TickerProviderStateMixin {
sharedPreferences.getString("token") != "") {
Navigator.of(context).popAndPushNamed('/router/main_page');
} else {
initController();
client = ApiService(Dio(), context: context);
isShowLogin = true;
setState(() {});
}
}
TapGestureRecognizer tapGestureRecognizer = TapGestureRecognizer();
final TapGestureRecognizer tapGestureRecognizer = TapGestureRecognizer();
double offsetBtn = 0;
double rota = 1.04;
Image image;
buildImageInfo(BuildContext context) async {
image = Image.asset("assets/image/laoban.png");
image.image
.resolve(ImageConfiguration())
.addListener(ImageStreamListener((ImageInfo info, bool _) {
double width = info.image.width.toDouble();
double screenWidth = 375;
if ((width / screenWidth) < rota) {
rota = (screenWidth * 1.04) / width;
}
if (mounted)
setState(() {});
}));
}
@override
void didChangeDependencies() {
super.didChangeDependencies();
}
@override
void initState() {
super.initState();
isLogin();
try {
buildImageInfo(this.context);
} catch(ex) {}
}
initController() {
tapGestureRecognizer.onTap = () {
Navigator.of(context).pushNamed('/router/treaty_page');
};
@ -108,9 +139,9 @@ class _MyLoginPageState extends State<LoginPage> with TickerProviderStateMixin {
changeAlpha = (changeAlpha > 255 ? 255 : changeAlpha);
changeAlpha = (changeAlpha < 0 ? 0 : changeAlpha);
alpha = (initAlpha +
scrollController.offset /
(height - chaHeight) *
(255 - initAlpha))
scrollController.offset /
(height - chaHeight) *
(255 - initAlpha))
.toInt();
alpha = (alpha > 255 ? 255 : alpha);
alpha = (alpha < 0 ? 0 : alpha);
@ -225,7 +256,7 @@ class _MyLoginPageState extends State<LoginPage> with TickerProviderStateMixin {
@override
void dispose() {
if (_timer != null) _timer.cancel();
if (_timer != null && _timer.isActive) _timer.cancel();
if (animatedContainer != null) animatedContainer.dispose();
super.dispose();
}
@ -358,7 +389,8 @@ class _MyLoginPageState extends State<LoginPage> with TickerProviderStateMixin {
@override
Widget build(BuildContext context) {
if (!animatedContainer.isAnimating) {
if (animatedContainer != null && !animatedContainer.isAnimating) {
animatedContainer.forward();
}
return AnimatedCrossFade(
@ -418,7 +450,7 @@ class _MyLoginPageState extends State<LoginPage> with TickerProviderStateMixin {
children: [
PhotoView(
imageProvider: AssetImage("assets/image/laoban.png"),
initialScale: Platform.isAndroid ? 1.02 : 1.15,
initialScale: rota,
basePosition: alignmentProgress,
),
Positioned(

2
lib/main.dart

@ -256,7 +256,7 @@ Map<String, WidgetBuilder> routers = <String, WidgetBuilder>{
WriteOffPage(arguments: arguments),
'/router/write_off_success_page': (context, {arguments}) =>
WriteOffSuccessPage(),
'/router/order_history_page': (context, {arguments}) => OrderHistoryPage(),
'/router/order_history_page': (context, {arguments}) => OrderHistoryPage(arguments: arguments),
'/router/order_details': (context, {arguments}) =>
OrderDetailPage(arguments: arguments),
'/router/recharge_page': (context, {arguments}) => RechargePage(),

94
lib/mine/mine_page.dart

@ -3,20 +3,15 @@ import 'dart:convert';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:huixiang/generated/l10n.dart';
import 'package:huixiang/main.dart';
import 'package:huixiang/mine/mine_view/mine_order.dart';
import 'package:huixiang/retrofit/data/base_data.dart';
import 'package:huixiang/retrofit/data/rank.dart';
import 'package:huixiang/retrofit/data/user_info.dart';
import 'package:huixiang/retrofit/retrofit_api.dart';
import 'package:huixiang/utils/event_type.dart';
import 'package:huixiang/utils/flutter_utils.dart';
import 'package:huixiang/utils/font_weight.dart';
import 'package:huixiang/view_widget/classic_header.dart';
import 'package:huixiang/view_widget/custom_image.dart';
import 'package:huixiang/view_widget/login_tips.dart';
import 'package:huixiang/view_widget/login_tips_dialog.dart';
import 'package:huixiang/view_widget/mine_vip_view.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
@ -26,7 +21,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'mine_view/mine_item.dart';
import 'mine_view/mine_view.dart';
import 'mine_view/order_card_view.dart';
import 'mine_view/wallet_coupon_view.dart';
class MinePage extends StatefulWidget {
@override
@ -44,7 +39,8 @@ class _MinePage extends State<MinePage> with AutomaticKeepAliveClientMixin {
_toUserInfo() async {
SharedPreferences shared = await SharedPreferences.getInstance();
if (shared.getString("token") == null || shared.getString("token") == "") {
Navigator.of(context).pushNamed('/router/login_page', arguments: {"login": "login"});
Navigator.of(context)
.pushNamed('/router/login_page', arguments: {"login": "login"});
return;
}
await Navigator.of(context).pushNamed('/router/user_info_page');
@ -54,7 +50,8 @@ class _MinePage extends State<MinePage> with AutomaticKeepAliveClientMixin {
@override
void dispose() {
super.dispose();
_refreshController.dispose();
if (_refreshController != null)
_refreshController.dispose();
}
@override
@ -64,10 +61,12 @@ class _MinePage extends State<MinePage> with AutomaticKeepAliveClientMixin {
eventBus.on<EventType>().listen((event) {
print("EventType: ${event.type}");
if (event.type < 3) {
setState(() {});
if (mounted)
setState(() {});
}
if (event.type == 3) {
setState(() {});
if (mounted)
setState(() {});
}
});
}
@ -127,7 +126,7 @@ class _MinePage extends State<MinePage> with AutomaticKeepAliveClientMixin {
header: MyHeader(),
physics: BouncingScrollPhysics(),
onRefresh: () {
setState((){});
setState(() {});
},
child: SingleChildScrollView(
child: Container(
@ -139,36 +138,55 @@ class _MinePage extends State<MinePage> with AutomaticKeepAliveClientMixin {
builder: (context, snapshot) {
return Column(
children: [
SizedBox(height: 36,),
Container(
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.bottomLeft,
end: Alignment.topRight,
colors: [
Color(0xFFE5F7FF),
Color(0xFFE8F5E9),
],
stops: [0.1, 0.8],
),
),
child: Column(
children: [
///
MineView(
userInfo,
() {
_toUserInfo();
},
() {
toIntegralPage();
},
),
///
MineView(
userInfo,
() {
_toUserInfo();
},
() {
toIntegralPage();
},
/// VIP等级信息
MineVipView(
tag: "vip",
ranks: ranks,
userInfo: userInfo,
rank: (userInfo != null)
? int.tryParse(userInfo.points)
: 0,
rankMax: (userInfo != null &&
userInfo.memberRankVo != null)
? userInfo.memberRankVo.rankOrigin
: 0,
createTime: (userInfo != null)
? userInfo.createTime
: "",
),
],
),
),
/// VIP等级信息
MineVipView(
tag: "vip",
ranks: ranks,
userInfo: userInfo,
rank: (userInfo != null)
? int.tryParse(userInfo.points)
: 0,
rankMax: (userInfo != null &&
userInfo.memberRankVo != null)
? userInfo.memberRankVo.rankOrigin
: 0,
createTime: (userInfo != null) ? userInfo.createTime : "",
),
///
WalletCoupon(),
///
OrderCard(),
MineOrderView(),
/// item
MineItem(),

74
lib/mine/mine_view/mine_item.dart

@ -1,6 +1,5 @@
import 'package:flutter/material.dart';
import 'package:huixiang/generated/l10n.dart';
import 'package:huixiang/utils/flutter_utils.dart';
import 'package:huixiang/utils/font_weight.dart';
import 'package:huixiang/view_widget/login_tips_dialog.dart';
import 'package:shared_preferences/shared_preferences.dart';
@ -11,7 +10,6 @@ class MineItem extends StatefulWidget {
State<StatefulWidget> createState() {
return _MineItem();
}
}
class _MineItem extends State<MineItem> {
@ -33,21 +31,33 @@ class _MineItem extends State<MineItem> {
],
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
InkWell(
onTap: () {
SharedPreferences.getInstance().then((value) {
if (value.getString("token") == null ||
value.getString("token") == "") {
LoginTipsDialog().show(context);
return;
}
Navigator.of(context).pushNamed('/router/mine_wallet');
});
},
child: mineItem(
S.of(context).wodeqianbao,
"assets/image/icon_mine_wallet.png",
// InkWell(
// onTap: () {
// SharedPreferences.getInstance().then((value) {
// if (value.getString("token") == null ||
// value.getString("token") == "") {
// LoginTipsDialog().show(context);
// return;
// }
// Navigator.of(context).pushNamed('/router/mine_wallet');
// });
// },
// child: mineItem(
// S.of(context).wodeqianbao,
// "assets/image/icon_mine_wallet.png",
// ),
// ),
Container(
padding: EdgeInsets.symmetric(vertical: 4.h),
child: Text(
"我的工具",
style: TextStyle(
color: Color(0xFF353535),
fontWeight: MyFontWeight.semi_bold,
fontSize: 16.sp,
),
),
),
InkWell(
@ -75,12 +85,12 @@ class _MineItem extends State<MineItem> {
LoginTipsDialog().show(context);
return;
}
Navigator.of(context).pushNamed('/router/roll_center_page');
Navigator.of(context).pushNamed('/router/mine_card');
});
},
child: mineItem(
S.of(context).lingquanzhongxin,
"assets/image/icon_mine_invoice_assistant.png",
S.of(context).wodekaquan,
"assets/image/icon_mine_card.png",
),
),
InkWell(
@ -99,15 +109,15 @@ class _MineItem extends State<MineItem> {
"assets/image/icon_location_address.png",
),
),
InkWell(
onTap: () {
Navigator.of(context).pushNamed('/router/setting_page');
},
child: mineItem(
S.of(context).shezhi,
"assets/image/icon_mine_setting.png",
),
),
// InkWell(
// onTap: () {
// Navigator.of(context).pushNamed('/router/setting_page');
// },
// child: mineItem(
// S.of(context).shezhi,
// "assets/image/icon_mine_setting.png",
// ),
// ),
// mineItem(
// S.of(context).bangzhuyufankui,
// "assets/image/icon_mine_feedback.png",
@ -117,11 +127,11 @@ class _MineItem extends State<MineItem> {
);
}
///
Widget mineItem(text, icon) {
return Container(
margin: EdgeInsets.only(top: 8.h, bottom: 8.h),
color: Colors.white,
margin: EdgeInsets.symmetric(vertical: 6.h),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
@ -132,7 +142,7 @@ class _MineItem extends State<MineItem> {
height: 28.h,
),
SizedBox(
width: 12.w,
width: 8.w,
),
Expanded(
flex: 1,
@ -154,6 +164,4 @@ class _MineItem extends State<MineItem> {
),
);
}
}

134
lib/mine/mine_view/mine_order.dart

@ -0,0 +1,134 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:huixiang/generated/l10n.dart';
import 'package:huixiang/utils/font_weight.dart';
import 'package:huixiang/view_widget/login_tips_dialog.dart';
import 'package:shared_preferences/shared_preferences.dart';
class MineOrderView extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _MineOrderView();
}
}
class _MineOrderView extends State<MineOrderView> {
@override
Widget build(BuildContext context) {
return Container(
margin: EdgeInsets.fromLTRB(16.w, 10.h, 16.w, 6.h),
padding: EdgeInsets.fromLTRB(20.w, 12.h, 20.w, 12.h),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(8),
boxShadow: [
BoxShadow(
color: Colors.black.withAlpha(12),
offset: Offset(0, 3),
blurRadius: 14,
spreadRadius: 0,
),
],
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
padding: EdgeInsets.symmetric(vertical: 4.h),
child: Text(
"我的订单",
style: TextStyle(
color: Color(0xFF353535),
fontWeight: MyFontWeight.semi_bold,
fontSize: 16.sp,
),
),
),
SizedBox(height: 8.h,),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
InkWell(
onTap: (){
toOrderHistory(1);
},
child: orderStatusItem(1),
),
InkWell(
onTap: (){
toOrderHistory(2);
},
child: orderStatusItem(2),
),
InkWell(
onTap: (){
toOrderHistory(3);
},
child: orderStatusItem(3),
),
InkWell(
onTap: (){
toOrderHistory(0);
},
child: orderStatusItem(0),
),
],
),
],
),
);
}
toOrderHistory(int status) {
SharedPreferences.getInstance().then((value) {
if (value.getString("token") == null ||
value.getString("token") == "") {
LoginTipsDialog().show(context);
return;
}
Navigator.of(context).pushNamed('/router/order_history_page', arguments: {"status":status});
});
}
List<String> orderStatusImg = [
"assets/image/icon_mine_order_qb.png",
"assets/image/icon_mine_order_dfk.png",
"assets/image/icon_mine_order_wwc.png",
"assets/image/icon_mine_order_ywc.png",
];
List<String> orderStatusText = [
S.current.quanbu,
S.current.daifukuan,
S.current.weiwancheng,
S.current.yiwancheng,
];
Widget orderStatusItem(int status) {
return Container(
margin: EdgeInsets.symmetric(vertical: 4.h),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Image.asset(
orderStatusImg[status],
fit: BoxFit.contain,
width: 32.w,
height: 32.w,
),
SizedBox(height: 4.h,),
Text(
orderStatusText[status],
style: TextStyle(
color: Color(0xFF353535),
fontSize: 12.sp,
fontWeight: MyFontWeight.medium,
),
),
],
),
);
}
}

94
lib/mine/mine_view/mine_view.dart

@ -28,36 +28,49 @@ class _MineView extends State<MineView> {
return Column(
children: [
Container(
// margin: EdgeInsets.only(right: 16.w),
margin: EdgeInsets.only(top: 28.w),
alignment: Alignment.centerRight,
height: 20,
// child: Row(
// mainAxisAlignment: MainAxisAlignment.end,
// children: [
// InkWell(
// onTap: (){
// toScan();
// },
// child: Container(
// margin: EdgeInsets.all(8.h),
// child: Image.asset(
// "assets/image/icon_scan_qr_code.png",
// width: 24.w,
// height: 24.h,
// ),
// ),
// ),
// ],
// ),
child: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
InkWell(
onTap: () {
toScan();
},
child: Container(
padding: EdgeInsets.all(8.h),
child: Image.asset(
"assets/image/icon_scan_qr_code.png",
width: 24.w,
height: 24.h,
),
),
),
InkWell(
onTap: () {
Navigator.of(context).pushNamed('/router/setting_page');
},
child: Container(
padding: EdgeInsets.all(8.h),
margin: EdgeInsets.only(right: 12.w),
child: Image.asset(
"assets/image/icon_mine_setting.png",
width: 24.w,
height: 24.h,
),
),
),
],
),
),
InkWell(
onTap: (){
onTap: () {
widget.toUserInfo();
},
child: mineView(),
),
SizedBox(
height: 22.h,
height: 12.h,
),
],
);
@ -70,10 +83,10 @@ class _MineView extends State<MineView> {
builder: (context) {
return RequestPermission(
"assets/image/icon_camera_permission_tips.png",
"您未开启相机权限,请点击开启",
"为了您可以在使用过程中更换头像,请您开启相机使用权限",
S.of(context).ninxiangjiquanxianweikaiqi,
S.of(context).weilekaipaizhaoxuanzhetouxiang,
S.of(context).kaiqiquanxian,
(result) async {
(result) async {
if (result) {
await openAppSettings();
}
@ -97,14 +110,27 @@ class _MineView extends State<MineView> {
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
MImage(
widget.userInfo == null ? "" : widget.userInfo.headimg,
isCircle: true,
width: 50,
height: 50,
fit: BoxFit.cover,
errorSrc: "assets/image/default_user.png",
fadeSrc: "assets/image/default_user.png",
Stack(
children: [
MImage(
widget.userInfo == null ? "" : widget.userInfo.headimg,
isCircle: true,
width: 50,
height: 50,
fit: BoxFit.cover,
errorSrc: "assets/image/default_user.png",
fadeSrc: "assets/image/default_user.png",
),
Positioned(
bottom: 0,
right: 2.w,
child: Image.asset(
"assets/image/icon_mine_edit.png",
width: 17.w,
height: 17.w,
),
),
],
),
SizedBox(
width: 10.w,
@ -189,7 +215,7 @@ class _MineView extends State<MineView> {
alignment: Alignment.bottomRight,
height: 50.h,
child: GestureDetector(
onTap: (){
onTap: () {
widget.toIntegralPage();
},
child: Row(

63
lib/mine/mine_view/order_card_view.dart → lib/mine/mine_view/wallet_coupon_view.dart

@ -1,24 +1,22 @@
import 'package:flutter/material.dart';
import 'package:huixiang/generated/l10n.dart';
import 'package:huixiang/utils/flutter_utils.dart';
import 'package:huixiang/utils/font_weight.dart';
import 'package:huixiang/view_widget/login_tips_dialog.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
class OrderCard extends StatefulWidget {
class WalletCoupon extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _OrderCard();
return _WalletCoupon();
}
}
class _OrderCard extends State<OrderCard> {
class _WalletCoupon extends State<WalletCoupon> {
@override
Widget build(BuildContext context) {
return Container(
margin: EdgeInsets.fromLTRB(16.w, 12.h, 16.w, 10.h),
margin: EdgeInsets.fromLTRB(16.w, 16.h, 16.w, 6.h),
padding: EdgeInsets.fromLTRB(20.w, 12.h, 20.w, 12.h),
decoration: BoxDecoration(
color: Colors.white,
@ -29,7 +27,7 @@ class _OrderCard extends State<OrderCard> {
offset: Offset(0, 3),
blurRadius: 14,
spreadRadius: 0,
)
),
],
),
child: Row(
@ -44,7 +42,7 @@ class _OrderCard extends State<OrderCard> {
LoginTipsDialog().show(context);
return;
}
Navigator.of(context).pushNamed('/router/mine_card');
Navigator.of(context).pushNamed('/router/roll_center_page');
});
},
child: Row(
@ -52,21 +50,25 @@ class _OrderCard extends State<OrderCard> {
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Image.asset(
"assets/image/icon_mine_card.png",
width: 32.w,
height: 32.h,
"assets/image/icon_mine_invoice_assistant.png",
width: 48.h,
height: 48.h,
),
SizedBox(
width: 12.w,
),
Text(
S.of(context).kaquan,
style: TextStyle(
fontWeight: MyFontWeight.medium,
fontSize: 16.sp,
color: Color(0xFF353535),
Expanded(
child: Text(
S.of(context).lingquanzhongxin,
overflow: TextOverflow.ellipsis,
style: TextStyle(
fontWeight: MyFontWeight.medium,
fontSize: 16.sp,
color: Color(0xFF353535),
),
),
)
flex: 1,
),
],
),
),
@ -87,7 +89,7 @@ class _OrderCard extends State<OrderCard> {
LoginTipsDialog().show(context);
return;
}
Navigator.of(context).pushNamed('/router/order_history_page');
Navigator.of(context).pushNamed('/router/mine_wallet');
});
},
child: Row(
@ -95,20 +97,24 @@ class _OrderCard extends State<OrderCard> {
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Image.asset(
"assets/image/icon_mine_order.png",
width: 32.w,
height: 32.h,
"assets/image/icon_mine_wallet.png",
width: 48.h,
height: 48.h,
),
SizedBox(
width: 12.w,
),
Text(
S.of(context).dingdan,
style: TextStyle(
fontWeight: MyFontWeight.medium,
fontSize: 16.sp,
color: Color(0xFF353535),
Expanded(
child: Text(
S.of(context).wodeqianbao,
overflow: TextOverflow.ellipsis,
style: TextStyle(
fontWeight: MyFontWeight.medium,
fontSize: 16.sp,
color: Color(0xFF353535),
),
),
flex: 1,
),
],
),
@ -118,5 +124,4 @@ class _OrderCard extends State<OrderCard> {
),
);
}
}

3
lib/mine/user_info_page.dart

@ -350,6 +350,7 @@ class _UserInfoPage extends State<UserInfoPage> {
}
Widget avatarItem(type, value) {
print("object: $value");
return Container(
margin: EdgeInsets.only(top: 14.h, bottom: 14.h),
child: Row(
@ -366,7 +367,7 @@ class _UserInfoPage extends State<UserInfoPage> {
flex: 1,
),
buildValue(type, value),
if (type != 4 && type != 3) valueEnd(),
if (type != 4 && type != 3 && (((modifyInfo["birth"] == "")) || type != 2)) valueEnd(),
],
),
);

2
lib/order/order_detail_page.dart

@ -1225,7 +1225,7 @@ class _OrderDetailPage extends State<OrderDetailPage> {
),
Expanded(
child: Text(
condition,
condition ?? "",
style: TextStyle(
fontSize: 10.sp,
color: Color(0xFFA29E9E),

65
lib/order/order_history_page.dart

@ -19,6 +19,11 @@ import 'package:shared_preferences/shared_preferences.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
class OrderHistoryPage extends StatefulWidget {
final Map arguments;
OrderHistoryPage({this.arguments});
@override
State<StatefulWidget> createState() {
return _OrderHistoryPage();
@ -28,13 +33,13 @@ class OrderHistoryPage extends StatefulWidget {
class _OrderHistoryPage extends State<OrderHistoryPage>
with SingleTickerProviderStateMixin {
List<Widget> _pages;
TabController tabcontroller;
TabController tabController;
@override
void didChangeDependencies() {
super.didChangeDependencies();
if (tabcontroller == null)
tabcontroller = TabController(length: 4, vsync: this);
if (tabController == null)
tabController = TabController(initialIndex: widget.arguments["status"], length: 4, vsync: this);
_pages = [
OrderHistoryList(0),
@ -47,7 +52,7 @@ class _OrderHistoryPage extends State<OrderHistoryPage>
@override
Widget build(BuildContext context) {
return DefaultTabController(
length: 3,
length: 4,
child: Scaffold(
appBar: MyAppBar(
title: S.of(context).dingdan,
@ -59,7 +64,7 @@ class _OrderHistoryPage extends State<OrderHistoryPage>
bottom: PreferredSize(
preferredSize: Size(double.infinity, 38.h),
child: TabBar(
controller: tabcontroller,
controller: tabController,
isScrollable: false,
indicatorWeight: 2.w,
indicatorSize: TabBarIndicatorSize.label,
@ -94,7 +99,7 @@ class _OrderHistoryPage extends State<OrderHistoryPage>
),
body: TabBarView(
children: _pages,
controller: tabcontroller,
controller: tabController,
),
),
);
@ -201,7 +206,8 @@ class _OrderHistoryList extends State<OrderHistoryList>
super.initState();
SharedPreferences.getInstance().then((value) => {
apiService = ApiService(Dio(), context: context, token: value.getString("token")),
apiService = ApiService(Dio(),
context: context, token: value.getString("token")),
queryOrder(),
});
}
@ -445,21 +451,28 @@ class _OrderHistoryList extends State<OrderHistoryList>
text: "暂不支持此功能",
));
} else if (type == 2) {
SmartDialog.show(
widget: Tips(
() {
SmartDialog.dismiss();
},
text: "暂不支持此功能",
));
orderCancel(orderInfo.id);
} else if (type == 3) {
SmartDialog.show(
widget: Tips(
() {
SmartDialog.dismiss();
},
text: "暂不支持此功能",
));
() {
SmartDialog.dismiss();
},
text: "暂不支持此功能",
));
orderInfo.tenantCode;
orderInfo.id;
///
// Map param = {
// "id": orderInfo.id,
// "orderProductVOList": orderInfo
// .orderDetail.orderProductList
// .map((e) => e.toJson())
// .toList(),
// "payChannel": 1,
// "orderType": 0
// };
// toPay(param);
} else if (type == 4) {
Navigator.of(context).pushNamed(
'/router/logistics_information_page',
@ -485,6 +498,20 @@ class _OrderHistoryList extends State<OrderHistoryList>
);
}
toPay(Map param) async {
apiService.settlement(param).catchError((error) {
});
}
orderCancel(String orderId) async {
BaseData baseData = await apiService.orderCancel(orderId);
if (baseData != null && baseData.isSuccess) {
SmartDialog.showToast("订单取消成功");
_onRefresh();
}
}
aginOrder(storeId) {
Navigator.of(context)
.pushNamed('/router/union_detail_page', arguments: {"id": storeId});

2
lib/retrofit/data/coupon.dart

@ -89,6 +89,6 @@ class Coupon {
'receiveTime': this.receiveTime,
'useTime': this.useTime,
'status': this.status,
'storeList': this.storeList.map((e) => e.toJson()).toList()
'storeList': (this.storeList != null && this.storeList.length > 0) ? this.storeList.map((e) => e.toJson()).toList() : []
};
}

2
lib/retrofit/data/store.dart

@ -106,7 +106,7 @@ class Store {
'headMobile': this.headMobile,
'deliveryInfo': this.deliveryInfo,
'businessType': this.businessType,
'couponVO': this.couponVO.toJson(),
'couponVO': this.couponVO != null ? this.couponVO.toJson() : null,
'posType': this.posType,
};

23
lib/retrofit/retrofit_api.dart

@ -13,11 +13,8 @@ import 'package:huixiang/retrofit/data/article.dart';
import 'package:huixiang/retrofit/data/base_data.dart';
import 'package:huixiang/retrofit/data/coupon.dart';
import 'package:huixiang/retrofit/data/order_info.dart';
import 'package:huixiang/utils/flutter_utils.dart';
import 'package:huixiang/view_widget/login_tips.dart';
import 'package:huixiang/view_widget/login_tips_dialog.dart';
import 'package:retrofit/retrofit.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'data/address.dart';
import 'data/banner.dart';
@ -46,12 +43,11 @@ const baseUrl = "https://pos.platform.lotus-wallet.com/app/"; ///正式
// const base_url = "http://192.168.10.236:8766/app/"; ///
// const baseUrl = "http://192.168.10.236:8766/app/"; ///
// const base_url = "http://192.168.10.74:8766/app/";
// const baseUrl = "http://192.168.10.74:8766/app/";
// const base_url = "http://192.168.10.37:8766/app/";
// const baseUrl = "http://192.168.10.37:8766/app/";
@RestApi(baseUrl: baseUrl)
abstract class ApiService {
factory ApiService(Dio dio,
{String baseUrl,
BuildContext context,
@ -64,10 +60,11 @@ abstract class ApiService {
headers["Environment"] = "app";
}
dio.options = BaseOptions(
connectTimeout: 60000,
receiveTimeout: 60000,
headers: headers,
responseType: ResponseType.json);
connectTimeout: 60000,
receiveTimeout: 60000,
headers: headers,
responseType: ResponseType.json,
);
dio.interceptors.add(
InterceptorsWrapper(onRequest: (RequestOptions options) {
debugPrint("\n======================= 请求数据 =======================");
@ -85,10 +82,10 @@ abstract class ApiService {
}
debugPrint("params queryParameters = ${options.queryParameters}");
}, onResponse: (Response response) {
debugPrint("\n======================= 响应数据开始 =======================");
if (showLoading && EasyLoading.isShow) {
EasyLoading.dismiss();
}
debugPrint("\n======================= 响应数据开始 =======================");
debugPrint("code = ${response.statusCode}");
p(jsonEncode(response.data));
Map map = response.data;
@ -357,5 +354,7 @@ abstract class ApiService {
@GET("/order/orderCancel?id={id}")
Future<BaseData<bool>> orderCancel(@Path("id") String id);
///
@POST("/order/settlement")
Future<BaseData<String>> settlement(@Body() Map<String, String> map);
}

16
lib/setting/permission_setting_page.dart

@ -52,17 +52,17 @@ class _PermissionSettingPage extends State<PermissionSettingPage> {
];
List<String> titleTips = [
"您未开启位置权限,请点击开启",
"您未开启消息通知权限,请点击开启",
"您未开启相机权限,请点击开启",
"您未开启存储权限,请点击开启",
S.current.nindingweiquanxianweiyunxu,
S.current.ninxiaoxiquanxianweikaiqi,
S.current.ninxiangjiquanxianweikaiqi,
S.current.nincunchuquanxianweikaiqi,
];
List<String> contentTips = [
"为了向您推荐附近的门店信息,推荐您在使用期间让我们使用位置信息",
"为了您可以及时收到我们的活动信息,请您开启消息通知权限",
"为了您可以在使用过程中更换头像,请您开启相机使用权限",
"为了获得照片使用,缓存等功能,推荐您在使用期间打开存储权限",
S.current.weilexiangnintuijianfujindemendianxinxi,
S.current.weilejishishoudaohuodongxiaoxi,
S.current.weilekaipaizhaoxuanzhetouxiang,
S.current.weilexuanzhezhaopianhuancun,
];
Map<Permission, bool> permissionSwitch = {};

1
lib/union/union_details_page.dart

@ -266,6 +266,7 @@ class _UnionDetailsPage extends State<UnionDetailsPage> {
if (latitude != null && longitude != null)
"position": "$latitude,$longitude",
"baseURL": "https://pos.api.lotus-wallet.com/app/",
// "baseURL": "http://192.168.10.236:8765/app/",
"uid": userId,
"userInfo": {
"nickname": nickname,

9
lib/union/union_page.dart

@ -36,8 +36,7 @@ class UnionPage extends StatefulWidget {
class _UnionPage extends State<UnionPage>
with AutomaticKeepAliveClientMixin, WidgetsBindingObserver {
final RefreshController refreshController =
RefreshController(initialRefresh: false);
final RefreshController refreshController = RefreshController(initialRefresh: false);
ApiService apiService;
bool isKeyBoardShow = false;
BMFCoordinate latLng;
@ -46,9 +45,11 @@ class _UnionPage extends State<UnionPage>
void dispose() {
super.dispose();
WidgetsBinding.instance.removeObserver(this);
Location.getInstance().aMapFlutterLocation.stopLocation();
if (Location.getInstance() != null && Location.getInstance().aMapFlutterLocation != null)
Location.getInstance().aMapFlutterLocation.stopLocation();
refreshController.dispose();
if (refreshController != null)
refreshController.dispose();
}
@override

2
lib/utils/flutter_utils.dart

@ -17,7 +17,7 @@ class AppUtils {
static double textScale(context) {
double textScaleFactor = MediaQuery.of(context).textScaleFactor;
print("textScaleFactor: $textScaleFactor");
// print("textScaleFactor: $textScaleFactor");
return textScaleFactor > 1.15 ? 1.15 : textScaleFactor;
}

1
lib/utils/min.dart

@ -59,6 +59,7 @@ class Min {
}
static startMin(appid, json) async {
print("startMin: $json");
_channel.invokeMethod(
'startMin', <String, dynamic>{"appid": appid, "json": json});
}

2
lib/view_widget/custom_image.dart

@ -33,7 +33,7 @@ class MImage extends StatelessWidget {
String imageUrl = "";
if (src != null && src != "") {
imageUrl = "$src?imageMogr2/thumbnail/${constraints.constrainWidth() * scaleIndex}"
"x${constraints.constrainHeight() * scaleIndex}/format/webp/blur/1x0/quality/75";
"x${constraints.constrainHeight() * scaleIndex}/format/webp/quality/100";
}
if (imageUrl == null || imageUrl == "") {
return Image.asset(

1
lib/view_widget/hot_item.dart

@ -282,6 +282,7 @@ class _HotArticleItem extends State<HotArticleItem> {
Positioned(
child: Visibility(
visible: (widget.article != null &&
widget.article.coverImg != null &&
widget.article.coverImg != "" &&
widget.article.coverImg.endsWith(".mp4")),
child: Center(

67
lib/view_widget/mine_vip_view.dart

@ -47,9 +47,7 @@ class MineVipView extends StatelessWidget {
userInfo.memberRankVo != null &&
ranks != null &&
ranks.length > 0) {
curLevel = (ranks
.indexWhere((element) => element.id == userInfo.memberRankVo.id) +
1);
curLevel = (ranks.indexWhere((element) => element.id == userInfo.memberRankVo.id) + 1);
vipLevel = curLevel;
}
@ -115,19 +113,25 @@ class MineVipView extends StatelessWidget {
}
}
bool isUserVip = (userInfo == null);
Widget widget = Container(
margin: EdgeInsets.fromLTRB(padding.w, 16.h, padding.w, 8.h),
margin: isUserVip
? EdgeInsets.fromLTRB(padding.w, 16.h, padding.w, 8.h)
: EdgeInsets.fromLTRB(padding.w, 16.h, padding.w, 0),
width: MediaQuery.of(context).size.width - 32.w,
height: (MediaQuery.of(context).size.width - 32.w) /
1.78 *
AppUtils.textScale(context),
height: ((MediaQuery.of(context).size.width - 32.w) /
(isUserVip ? 1.88 : 2.3) *
AppUtils.textScale(context)),
decoration: BoxDecoration(
gradient: LinearGradient(
colors: linearColor,
begin: Alignment.topLeft,
end: Alignment.bottomRight,
),
borderRadius: BorderRadius.circular(8),
borderRadius: isUserVip
? BorderRadius.circular(8)
: BorderRadius.vertical(top: Radius.circular(8)),
boxShadow: [
BoxShadow(
color: Colors.black.withAlpha(12),
@ -201,7 +205,7 @@ class MineVipView extends StatelessWidget {
bottom: 12.h,
),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
@ -258,28 +262,29 @@ class MineVipView extends StatelessWidget {
),
),
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
S.of(context).kaitongriqi(
(createTime != null && createTime != "")
? createTime.split(" ")[0]
: "$createTime"),
style: TextStyle(
color: textColor,
fontWeight: MyFontWeight.regular,
fontSize: 12.sp,
),
),
Icon(
Icons.qr_code,
size: 24,
color: Colors.white,
),
],
),
// if (isUserVip)
// Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
// crossAxisAlignment: CrossAxisAlignment.center,
// children: [
// Text(
// S.of(context).kaitongriqi(
// (createTime != null && createTime != "")
// ? createTime.split(" ")[0]
// : "$createTime"),
// style: TextStyle(
// color: textColor,
// fontWeight: MyFontWeight.regular,
// fontSize: 12.sp,
// ),
// ),
// Icon(
// Icons.qr_code,
// size: 24,
// color: Colors.white,
// ),
// ],
// ),
],
),
),

62
lib/view_widget/new_coupon_widget.dart

@ -22,21 +22,27 @@ class NewCouponWidget extends StatelessWidget {
// if(coupon != null) {
// coupon.isEx = fa;
// }
// if (coupon != null) {
// print("object: ${coupon.toJson()}");
// }
return Container(
height: (coupon != null && coupon.isEx) ? 152.h : 140.h,
width: double.infinity,
margin: EdgeInsets.fromLTRB(14.w, 6.h, 14.w, 6.h),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(8),
boxShadow: [
BoxShadow(
color: Colors.black.withAlpha(12),
offset: Offset(0, 3),
blurRadius: 14,
spreadRadius: 0,
)
]),
color: Colors.white,
borderRadius: BorderRadius.circular(8),
boxShadow: [
BoxShadow(
color: Colors.black.withAlpha(12),
offset: Offset(0, 3),
blurRadius: 14,
spreadRadius: 0,
)
],
),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
@ -66,7 +72,7 @@ class NewCouponWidget extends StatelessWidget {
padding: EdgeInsets.fromLTRB(4, 2, 4, 2),
decoration: BoxDecoration(
borderRadius:
BorderRadius.all(Radius.circular(2)),
BorderRadius.circular(2),
border: Border.all(
width: 1,
color: Color(0xFFFF7A1A),
@ -87,7 +93,7 @@ class NewCouponWidget extends StatelessWidget {
),
Expanded(
child: Text(
coupon != null ? coupon.couponName ?? "" : "",
(coupon != null && coupon.storeList != null && coupon.storeList.length > 0) ? coupon.storeList[0].storeName ?? "" : "",
overflow: TextOverflow.ellipsis,
style: TextStyle(
fontSize: 16.sp,
@ -100,7 +106,7 @@ class NewCouponWidget extends StatelessWidget {
],
),
Text(
coupon != null ? coupon.couponDescription ?? "" : "",
coupon != null ? coupon.couponName ?? "" : "",
overflow: TextOverflow.ellipsis,
style: TextStyle(
fontSize: 14.sp,
@ -259,6 +265,36 @@ class NewCouponWidget extends StatelessWidget {
),
],
);
} else if (coupon.bizType == 3) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Expanded(
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
S.of(context).duihuanquan,
style: TextStyle(
fontSize: 25.sp,
fontWeight: MyFontWeight.semi_bold,
color: Color(0xff32A060),
),
),
],
),
),
Text(
S.of(context).xianshangshiyong,
style: TextStyle(
fontSize: 12.sp,
fontWeight: MyFontWeight.semi_bold,
color: Color(0xff32A060),
),
),
],
);
} else if (coupon.bizType == 5) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,

49
lib/web/web_view/web_content.dart

@ -106,29 +106,34 @@ class _WebContent extends State<WebContent> {
Widget videoWidget(double width, double height, src, sandboxMode) {
print("src : $src");
return Container(
width: MediaQuery.of(context).size.width,
height: (MediaQuery.of(context).size.width) / (width / height),
child: chewies = Chewie(
controller: chewieAudioController = ChewieController(
videoPlayerController: videoPlayerController =
VideoPlayerController.network(
src,
),
aspectRatio: width / height,
//
autoPlay: false,
//
looping: false,
//
//
materialProgressColors: chewie.ChewieProgressColors(
playedColor: Colors.white,
handleColor: Colors.white,
backgroundColor: Colors.grey,
bufferedColor: Colors.transparent,
return MediaQuery(
data: MediaQuery.of(context).copyWith(
textScaleFactor: 0.9,
),
child: Container(
width: MediaQuery.of(context).size.width - 17,
height: (MediaQuery.of(context).size.width) / (width / height),
child: chewies = Chewie(
controller: chewieAudioController = ChewieController(
videoPlayerController: videoPlayerController =
VideoPlayerController.network(
src,
),
aspectRatio: width / height,
//
autoPlay: false,
//
looping: false,
//
//
materialProgressColors: chewie.ChewieProgressColors(
playedColor: Colors.white,
handleColor: Colors.white,
backgroundColor: Colors.grey,
bufferedColor: Colors.transparent,
),
autoInitialize: true,
),
autoInitialize: true,
),
),
);

Loading…
Cancel
Save