diff --git a/assets/image/2x/icon_location_address.png b/assets/image/2x/icon_location_address.png index ee1d4b81..0d8c73d1 100644 Binary files a/assets/image/2x/icon_location_address.png and b/assets/image/2x/icon_location_address.png differ diff --git a/assets/image/2x/icon_mine_card.png b/assets/image/2x/icon_mine_card.png index be0cc359..72d76ff0 100644 Binary files a/assets/image/2x/icon_mine_card.png and b/assets/image/2x/icon_mine_card.png differ diff --git a/assets/image/2x/icon_mine_edit.png b/assets/image/2x/icon_mine_edit.png new file mode 100644 index 00000000..876eac44 Binary files /dev/null and b/assets/image/2x/icon_mine_edit.png differ diff --git a/assets/image/2x/icon_mine_invoice_assistant.png b/assets/image/2x/icon_mine_invoice_assistant.png index 21f79e18..5ed5074b 100644 Binary files a/assets/image/2x/icon_mine_invoice_assistant.png and b/assets/image/2x/icon_mine_invoice_assistant.png differ diff --git a/assets/image/2x/icon_mine_order_dfk.png b/assets/image/2x/icon_mine_order_dfk.png new file mode 100644 index 00000000..169e41e6 Binary files /dev/null and b/assets/image/2x/icon_mine_order_dfk.png differ diff --git a/assets/image/2x/icon_mine_order_qb.png b/assets/image/2x/icon_mine_order_qb.png new file mode 100644 index 00000000..8e522c84 Binary files /dev/null and b/assets/image/2x/icon_mine_order_qb.png differ diff --git a/assets/image/2x/icon_mine_order_wwc.png b/assets/image/2x/icon_mine_order_wwc.png new file mode 100644 index 00000000..f11ff417 Binary files /dev/null and b/assets/image/2x/icon_mine_order_wwc.png differ diff --git a/assets/image/2x/icon_mine_order_ywc.png b/assets/image/2x/icon_mine_order_ywc.png new file mode 100644 index 00000000..c4f4ce5d Binary files /dev/null and b/assets/image/2x/icon_mine_order_ywc.png differ diff --git a/assets/image/2x/icon_mine_records_of_consumption.png b/assets/image/2x/icon_mine_records_of_consumption.png index 865a504b..cf8407b7 100644 Binary files a/assets/image/2x/icon_mine_records_of_consumption.png and b/assets/image/2x/icon_mine_records_of_consumption.png differ diff --git a/assets/image/2x/icon_mine_setting.png b/assets/image/2x/icon_mine_setting.png index 8f8937c8..ba044c68 100644 Binary files a/assets/image/2x/icon_mine_setting.png and b/assets/image/2x/icon_mine_setting.png differ diff --git a/assets/image/2x/icon_mine_wallet.png b/assets/image/2x/icon_mine_wallet.png index 471ae2ed..4182f7b8 100644 Binary files a/assets/image/2x/icon_mine_wallet.png and b/assets/image/2x/icon_mine_wallet.png differ diff --git a/assets/image/2x/icon_scan_qr_code.png b/assets/image/2x/icon_scan_qr_code.png index aa8bb36f..dd2c5d95 100644 Binary files a/assets/image/2x/icon_scan_qr_code.png and b/assets/image/2x/icon_scan_qr_code.png differ diff --git a/assets/image/2x/icon_user.png b/assets/image/2x/icon_user.png index ddb81615..629844cf 100644 Binary files a/assets/image/2x/icon_user.png and b/assets/image/2x/icon_user.png differ diff --git a/assets/image/3x/icon_location_address.png b/assets/image/3x/icon_location_address.png index e7d5e94b..52de0f02 100644 Binary files a/assets/image/3x/icon_location_address.png and b/assets/image/3x/icon_location_address.png differ diff --git a/assets/image/3x/icon_mine_card.png b/assets/image/3x/icon_mine_card.png index 64e99792..527ece33 100644 Binary files a/assets/image/3x/icon_mine_card.png and b/assets/image/3x/icon_mine_card.png differ diff --git a/assets/image/3x/icon_mine_edit.png b/assets/image/3x/icon_mine_edit.png new file mode 100644 index 00000000..f636944c Binary files /dev/null and b/assets/image/3x/icon_mine_edit.png differ diff --git a/assets/image/3x/icon_mine_invoice_assistant.png b/assets/image/3x/icon_mine_invoice_assistant.png index 9e558a7c..a39544fc 100644 Binary files a/assets/image/3x/icon_mine_invoice_assistant.png and b/assets/image/3x/icon_mine_invoice_assistant.png differ diff --git a/assets/image/3x/icon_mine_order_dfk.png b/assets/image/3x/icon_mine_order_dfk.png new file mode 100644 index 00000000..3cee50ad Binary files /dev/null and b/assets/image/3x/icon_mine_order_dfk.png differ diff --git a/assets/image/3x/icon_mine_order_qb.png b/assets/image/3x/icon_mine_order_qb.png new file mode 100644 index 00000000..05b6eca8 Binary files /dev/null and b/assets/image/3x/icon_mine_order_qb.png differ diff --git a/assets/image/3x/icon_mine_order_wwc.png b/assets/image/3x/icon_mine_order_wwc.png new file mode 100644 index 00000000..ddefebcc Binary files /dev/null and b/assets/image/3x/icon_mine_order_wwc.png differ diff --git a/assets/image/3x/icon_mine_order_ywc.png b/assets/image/3x/icon_mine_order_ywc.png new file mode 100644 index 00000000..d5941420 Binary files /dev/null and b/assets/image/3x/icon_mine_order_ywc.png differ diff --git a/assets/image/3x/icon_mine_records_of_consumption.png b/assets/image/3x/icon_mine_records_of_consumption.png index bd3f8ef2..399c1292 100644 Binary files a/assets/image/3x/icon_mine_records_of_consumption.png and b/assets/image/3x/icon_mine_records_of_consumption.png differ diff --git a/assets/image/3x/icon_mine_setting.png b/assets/image/3x/icon_mine_setting.png index 92f882b6..33384e9a 100644 Binary files a/assets/image/3x/icon_mine_setting.png and b/assets/image/3x/icon_mine_setting.png differ diff --git a/assets/image/3x/icon_mine_wallet.png b/assets/image/3x/icon_mine_wallet.png index f4472f84..e2799eec 100644 Binary files a/assets/image/3x/icon_mine_wallet.png and b/assets/image/3x/icon_mine_wallet.png differ diff --git a/assets/image/3x/icon_scan_qr_code.png b/assets/image/3x/icon_scan_qr_code.png index a686bf51..d2b59602 100644 Binary files a/assets/image/3x/icon_scan_qr_code.png and b/assets/image/3x/icon_scan_qr_code.png differ diff --git a/assets/image/3x/icon_user.png b/assets/image/3x/icon_user.png index 76242a5e..82395453 100644 Binary files a/assets/image/3x/icon_user.png and b/assets/image/3x/icon_user.png differ diff --git a/assets/image/icon_location_address.png b/assets/image/icon_location_address.png index fc2d3c0c..dcbd756e 100644 Binary files a/assets/image/icon_location_address.png and b/assets/image/icon_location_address.png differ diff --git a/assets/image/icon_mine_card.png b/assets/image/icon_mine_card.png index fef2da70..97b826e0 100644 Binary files a/assets/image/icon_mine_card.png and b/assets/image/icon_mine_card.png differ diff --git a/assets/image/icon_mine_edit.png b/assets/image/icon_mine_edit.png new file mode 100644 index 00000000..9316ebca Binary files /dev/null and b/assets/image/icon_mine_edit.png differ diff --git a/assets/image/icon_mine_invoice_assistant.png b/assets/image/icon_mine_invoice_assistant.png index 5ff73e8f..ddf2c440 100644 Binary files a/assets/image/icon_mine_invoice_assistant.png and b/assets/image/icon_mine_invoice_assistant.png differ diff --git a/assets/image/icon_mine_order_dfk.png b/assets/image/icon_mine_order_dfk.png new file mode 100644 index 00000000..46ca1500 Binary files /dev/null and b/assets/image/icon_mine_order_dfk.png differ diff --git a/assets/image/icon_mine_order_qb.png b/assets/image/icon_mine_order_qb.png new file mode 100644 index 00000000..a178b8cc Binary files /dev/null and b/assets/image/icon_mine_order_qb.png differ diff --git a/assets/image/icon_mine_order_wwc.png b/assets/image/icon_mine_order_wwc.png new file mode 100644 index 00000000..dd732278 Binary files /dev/null and b/assets/image/icon_mine_order_wwc.png differ diff --git a/assets/image/icon_mine_order_ywc.png b/assets/image/icon_mine_order_ywc.png new file mode 100644 index 00000000..c3581ff3 Binary files /dev/null and b/assets/image/icon_mine_order_ywc.png differ diff --git a/assets/image/icon_mine_records_of_consumption.png b/assets/image/icon_mine_records_of_consumption.png index d5b15417..26dcea48 100644 Binary files a/assets/image/icon_mine_records_of_consumption.png and b/assets/image/icon_mine_records_of_consumption.png differ diff --git a/assets/image/icon_mine_setting.png b/assets/image/icon_mine_setting.png index dce6b6c5..bf2a499c 100644 Binary files a/assets/image/icon_mine_setting.png and b/assets/image/icon_mine_setting.png differ diff --git a/assets/image/icon_mine_wallet.png b/assets/image/icon_mine_wallet.png index f655ddb3..2f820f29 100644 Binary files a/assets/image/icon_mine_wallet.png and b/assets/image/icon_mine_wallet.png differ diff --git a/assets/image/icon_scan_qr_code.png b/assets/image/icon_scan_qr_code.png index 86d05fe8..edb2edba 100644 Binary files a/assets/image/icon_scan_qr_code.png and b/assets/image/icon_scan_qr_code.png differ diff --git a/assets/image/icon_user.png b/assets/image/icon_user.png index 5c3742da..a90520f9 100644 Binary files a/assets/image/icon_user.png and b/assets/image/icon_user.png differ diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 8d00ae52..e30b0e1c 100644 --- a/ios/Podfile.lock +++ b/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 diff --git a/lib/generated/intl/messages_en.dart b/lib/generated/intl/messages_en.dart index 1c1a5dd9..7f9b5df3 100644 --- a/lib/generated/intl/messages_en.dart +++ b/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("消费积分"), diff --git a/lib/generated/intl/messages_zh_CN.dart b/lib/generated/intl/messages_zh_CN.dart index 4ba28786..80ff9c24 100644 --- a/lib/generated/intl/messages_zh_CN.dart +++ b/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("消费积分"), diff --git a/lib/generated/intl/messages_zh_Hans_CN.dart b/lib/generated/intl/messages_zh_Hans_CN.dart index 27ee8dfe..bff63ef3 100644 --- a/lib/generated/intl/messages_zh_Hans_CN.dart +++ b/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("消费积分"), diff --git a/lib/generated/intl/messages_zh_Hant_CN.dart b/lib/generated/intl/messages_zh_Hant_CN.dart index ea7ff3d4..63ad7b67 100644 --- a/lib/generated/intl/messages_zh_Hant_CN.dart +++ b/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("消费积分"), diff --git a/lib/generated/intl/messages_zh_TW.dart b/lib/generated/intl/messages_zh_TW.dart index 81460646..1f2594c5 100644 --- a/lib/generated/intl/messages_zh_TW.dart +++ b/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("消费积分"), diff --git a/lib/generated/l10n.dart b/lib/generated/l10n.dart index 9c339aee..ef98c14a 100644 --- a/lib/generated/l10n.dart +++ b/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( diff --git a/lib/home/home_page.dart b/lib/home/home_page.dart index 30c53306..9d23ad22 100644 --- a/lib/home/home_page.dart +++ b/lib/home/home_page.dart @@ -127,7 +127,8 @@ class _HomePage extends State with AutomaticKeepAliveClientMixin { @override void dispose() { super.dispose(); - refreshController.dispose(); + if (refreshController != null) + refreshController.dispose(); } final RefreshController refreshController = RefreshController(); diff --git a/lib/home/huixiang_view/origin_info.dart b/lib/home/huixiang_view/origin_info.dart index ad3dcb18..ed16fa54 100644 --- a/lib/home/huixiang_view/origin_info.dart +++ b/lib/home/huixiang_view/origin_info.dart @@ -70,25 +70,27 @@ class _OriginInfo extends State { 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 { 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( diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 72c76bd7..2b7a1f27 100644 --- a/lib/l10n/intl_en.arb +++ b/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": "标为已读", diff --git a/lib/l10n/intl_zh_CN.arb b/lib/l10n/intl_zh_CN.arb index 00fc524e..32503bb4 100644 --- a/lib/l10n/intl_zh_CN.arb +++ b/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": "标为已读", diff --git a/lib/l10n/intl_zh_Hans_CN.arb b/lib/l10n/intl_zh_Hans_CN.arb index 00fc524e..32503bb4 100644 --- a/lib/l10n/intl_zh_Hans_CN.arb +++ b/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": "标为已读", diff --git a/lib/l10n/intl_zh_Hant_CN.arb b/lib/l10n/intl_zh_Hant_CN.arb index 22ef9890..22a3c64e 100644 --- a/lib/l10n/intl_zh_Hant_CN.arb +++ b/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": "發送", diff --git a/lib/l10n/intl_zh_TW.arb b/lib/l10n/intl_zh_TW.arb index ecb4cd2d..a6ecaa83 100644 --- a/lib/l10n/intl_zh_TW.arb +++ b/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": "標為已讀", diff --git a/lib/login/login_page.dart b/lib/login/login_page.dart index 72ca940a..13a653c8 100644 --- a/lib/login/login_page.dart +++ b/lib/login/login_page.dart @@ -70,22 +70,53 @@ class _MyLoginPageState extends State 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 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 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 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 with TickerProviderStateMixin { children: [ PhotoView( imageProvider: AssetImage("assets/image/laoban.png"), - initialScale: Platform.isAndroid ? 1.02 : 1.15, + initialScale: rota, basePosition: alignmentProgress, ), Positioned( diff --git a/lib/main.dart b/lib/main.dart index bb0e8cbd..b01f9a15 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -256,7 +256,7 @@ Map routers = { 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(), diff --git a/lib/mine/mine_page.dart b/lib/mine/mine_page.dart index 26bd9efc..605f74e6 100644 --- a/lib/mine/mine_page.dart +++ b/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 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 with AutomaticKeepAliveClientMixin { @override void dispose() { super.dispose(); - _refreshController.dispose(); + if (_refreshController != null) + _refreshController.dispose(); } @override @@ -64,10 +61,12 @@ class _MinePage extends State with AutomaticKeepAliveClientMixin { eventBus.on().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 with AutomaticKeepAliveClientMixin { header: MyHeader(), physics: BouncingScrollPhysics(), onRefresh: () { - setState((){}); + setState(() {}); }, child: SingleChildScrollView( child: Container( @@ -139,36 +138,55 @@ class _MinePage extends State 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(), diff --git a/lib/mine/mine_view/mine_item.dart b/lib/mine/mine_view/mine_item.dart index d4121b54..6bfb504d 100644 --- a/lib/mine/mine_view/mine_item.dart +++ b/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 createState() { return _MineItem(); } - } class _MineItem extends State { @@ -33,21 +31,33 @@ class _MineItem extends State { ], ), 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 { 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 { "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 { ); } - ///我的页面下面条目 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 { height: 28.h, ), SizedBox( - width: 12.w, + width: 8.w, ), Expanded( flex: 1, @@ -154,6 +164,4 @@ class _MineItem extends State { ), ); } - - } diff --git a/lib/mine/mine_view/mine_order.dart b/lib/mine/mine_view/mine_order.dart new file mode 100644 index 00000000..947758db --- /dev/null +++ b/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 createState() { + return _MineOrderView(); + } +} + +class _MineOrderView extends State { + @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 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 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, + ), + ), + ], + ), + ); + } +} diff --git a/lib/mine/mine_view/mine_view.dart b/lib/mine/mine_view/mine_view.dart index 28a83ced..273764e2 100644 --- a/lib/mine/mine_view/mine_view.dart +++ b/lib/mine/mine_view/mine_view.dart @@ -28,36 +28,49 @@ class _MineView extends State { 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 { 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 { 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 { alignment: Alignment.bottomRight, height: 50.h, child: GestureDetector( - onTap: (){ + onTap: () { widget.toIntegralPage(); }, child: Row( diff --git a/lib/mine/mine_view/order_card_view.dart b/lib/mine/mine_view/wallet_coupon_view.dart similarity index 66% rename from lib/mine/mine_view/order_card_view.dart rename to lib/mine/mine_view/wallet_coupon_view.dart index 44d0ff6d..0702b853 100644 --- a/lib/mine/mine_view/order_card_view.dart +++ b/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 createState() { - return _OrderCard(); + return _WalletCoupon(); } } -class _OrderCard extends State { +class _WalletCoupon extends State { @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 { offset: Offset(0, 3), blurRadius: 14, spreadRadius: 0, - ) + ), ], ), child: Row( @@ -44,7 +42,7 @@ class _OrderCard extends State { 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 { 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 { 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 { 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 { ), ); } - } diff --git a/lib/mine/user_info_page.dart b/lib/mine/user_info_page.dart index ceb0a162..bf9c94ea 100644 --- a/lib/mine/user_info_page.dart +++ b/lib/mine/user_info_page.dart @@ -350,6 +350,7 @@ class _UserInfoPage extends State { } 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 { flex: 1, ), buildValue(type, value), - if (type != 4 && type != 3) valueEnd(), + if (type != 4 && type != 3 && (((modifyInfo["birth"] == "")) || type != 2)) valueEnd(), ], ), ); diff --git a/lib/order/order_detail_page.dart b/lib/order/order_detail_page.dart index 9582ca60..0adc81a5 100644 --- a/lib/order/order_detail_page.dart +++ b/lib/order/order_detail_page.dart @@ -1225,7 +1225,7 @@ class _OrderDetailPage extends State { ), Expanded( child: Text( - condition, + condition ?? "", style: TextStyle( fontSize: 10.sp, color: Color(0xFFA29E9E), diff --git a/lib/order/order_history_page.dart b/lib/order/order_history_page.dart index 75f3e3c0..a78061cf 100644 --- a/lib/order/order_history_page.dart +++ b/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 createState() { return _OrderHistoryPage(); @@ -28,13 +33,13 @@ class OrderHistoryPage extends StatefulWidget { class _OrderHistoryPage extends State with SingleTickerProviderStateMixin { List _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 @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 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 ), body: TabBarView( children: _pages, - controller: tabcontroller, + controller: tabController, ), ), ); @@ -201,7 +206,8 @@ class _OrderHistoryList extends State 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 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 ); } + 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}); diff --git a/lib/retrofit/data/coupon.dart b/lib/retrofit/data/coupon.dart index 8cc6ec2b..462c33a8 100644 --- a/lib/retrofit/data/coupon.dart +++ b/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() : [] }; } \ No newline at end of file diff --git a/lib/retrofit/data/store.dart b/lib/retrofit/data/store.dart index aa19822a..289fc9ef 100644 --- a/lib/retrofit/data/store.dart +++ b/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, }; diff --git a/lib/retrofit/retrofit_api.dart b/lib/retrofit/retrofit_api.dart index 70a5661a..5545e91d 100644 --- a/lib/retrofit/retrofit_api.dart +++ b/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> orderCancel(@Path("id") String id); - + ///继续付款? + @POST("/order/settlement") + Future> settlement(@Body() Map map); } diff --git a/lib/setting/permission_setting_page.dart b/lib/setting/permission_setting_page.dart index 4dd6b050..56ec21dd 100644 --- a/lib/setting/permission_setting_page.dart +++ b/lib/setting/permission_setting_page.dart @@ -52,17 +52,17 @@ class _PermissionSettingPage extends State { ]; List titleTips = [ - "您未开启位置权限,请点击开启", - "您未开启消息通知权限,请点击开启", - "您未开启相机权限,请点击开启", - "您未开启存储权限,请点击开启", + S.current.nindingweiquanxianweiyunxu, + S.current.ninxiaoxiquanxianweikaiqi, + S.current.ninxiangjiquanxianweikaiqi, + S.current.nincunchuquanxianweikaiqi, ]; List contentTips = [ - "为了向您推荐附近的门店信息,推荐您在使用期间让我们使用位置信息", - "为了您可以及时收到我们的活动信息,请您开启消息通知权限", - "为了您可以在使用过程中更换头像,请您开启相机使用权限", - "为了获得照片使用,缓存等功能,推荐您在使用期间打开存储权限", + S.current.weilexiangnintuijianfujindemendianxinxi, + S.current.weilejishishoudaohuodongxiaoxi, + S.current.weilekaipaizhaoxuanzhetouxiang, + S.current.weilexuanzhezhaopianhuancun, ]; Map permissionSwitch = {}; diff --git a/lib/union/union_details_page.dart b/lib/union/union_details_page.dart index 4f41becf..9846ed31 100644 --- a/lib/union/union_details_page.dart +++ b/lib/union/union_details_page.dart @@ -266,6 +266,7 @@ class _UnionDetailsPage extends State { 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, diff --git a/lib/union/union_page.dart b/lib/union/union_page.dart index e7ea2960..612fb5ad 100644 --- a/lib/union/union_page.dart +++ b/lib/union/union_page.dart @@ -36,8 +36,7 @@ class UnionPage extends StatefulWidget { class _UnionPage extends State 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 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 diff --git a/lib/utils/flutter_utils.dart b/lib/utils/flutter_utils.dart index 5866d9d9..494bd722 100644 --- a/lib/utils/flutter_utils.dart +++ b/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; } diff --git a/lib/utils/min.dart b/lib/utils/min.dart index 69b411b5..cf13d53a 100644 --- a/lib/utils/min.dart +++ b/lib/utils/min.dart @@ -59,6 +59,7 @@ class Min { } static startMin(appid, json) async { + print("startMin: $json"); _channel.invokeMethod( 'startMin', {"appid": appid, "json": json}); } diff --git a/lib/view_widget/custom_image.dart b/lib/view_widget/custom_image.dart index 1eccbb72..6fbd838b 100644 --- a/lib/view_widget/custom_image.dart +++ b/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( diff --git a/lib/view_widget/hot_item.dart b/lib/view_widget/hot_item.dart index a55f04fc..82bcbc64 100644 --- a/lib/view_widget/hot_item.dart +++ b/lib/view_widget/hot_item.dart @@ -282,6 +282,7 @@ class _HotArticleItem extends State { Positioned( child: Visibility( visible: (widget.article != null && + widget.article.coverImg != null && widget.article.coverImg != "" && widget.article.coverImg.endsWith(".mp4")), child: Center( diff --git a/lib/view_widget/mine_vip_view.dart b/lib/view_widget/mine_vip_view.dart index 622cd2b6..713572e8 100644 --- a/lib/view_widget/mine_vip_view.dart +++ b/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, + // ), + // ], + // ), ], ), ), diff --git a/lib/view_widget/new_coupon_widget.dart b/lib/view_widget/new_coupon_widget.dart index d754645b..01adfceb 100644 --- a/lib/view_widget/new_coupon_widget.dart +++ b/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, diff --git a/lib/web/web_view/web_content.dart b/lib/web/web_view/web_content.dart index c4532193..5a5175b8 100644 --- a/lib/web/web_view/web_content.dart +++ b/lib/web/web_view/web_content.dart @@ -106,29 +106,34 @@ class _WebContent extends State { 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, ), ), );