Browse Source

Merge branch 'master' into dev

# Conflicts:
#	pubspec.lock
null_safety
w-R 4 years ago
parent
commit
43b756354f
  1. BIN
      assets/image/2x/icon_system_message.png
  2. BIN
      assets/image/2x/icon_system_order.png
  3. BIN
      assets/image/2x/icon_system_recharge.png
  4. BIN
      assets/image/3x/icon_system_message.png
  5. BIN
      assets/image/3x/icon_system_order.png
  6. BIN
      assets/image/3x/icon_system_recharge.png
  7. BIN
      assets/image/icon_system_message.png
  8. BIN
      assets/image/icon_system_order.png
  9. BIN
      assets/image/icon_system_recharge.png
  10. 13
      lib/generated/intl/messages_en.dart
  11. 13
      lib/generated/intl/messages_zh_CN.dart
  12. 13
      lib/generated/intl/messages_zh_Hans_CN.dart
  13. 15
      lib/generated/intl/messages_zh_Hant_CN.dart
  14. 15
      lib/generated/intl/messages_zh_TW.dart
  15. 130
      lib/generated/l10n.dart
  16. 4
      lib/home/home_page.dart
  17. 13
      lib/home/main_home_page.dart
  18. 65
      lib/home/points_mall_page.dart
  19. 15
      lib/l10n/intl_en.arb
  20. 14
      lib/l10n/intl_zh_CN.arb
  21. 14
      lib/l10n/intl_zh_Hans_CN.arb
  22. 16
      lib/l10n/intl_zh_Hant_CN.arb
  23. 14
      lib/l10n/intl_zh_TW.arb
  24. 4
      lib/main.dart
  25. 213
      lib/message/main_message_page.dart
  26. 53
      lib/message/mine_message.dart
  27. 2
      lib/message/real_time_info_page.dart
  28. 280
      lib/message/system_message.dart
  29. 10
      lib/mine/coupons_page.dart
  30. 55
      lib/mine/mine_wallet_page.dart
  31. 4
      lib/mine/recharge_page.dart
  32. 10
      lib/mine/roll_center_page.dart
  33. 8
      lib/mine/user_info_page.dart
  34. 138
      lib/mine/vip_balance_page.dart
  35. 4
      lib/mine/vip_detail_page.dart
  36. 2
      lib/order/exchange_history_page.dart
  37. 5
      lib/order/write_off_page.dart
  38. 3
      lib/retrofit/data/exchange_order.dart
  39. 86
      lib/retrofit/data/goods_category.dart
  40. 101
      lib/retrofit/data/message.dart
  41. 13
      lib/retrofit/retrofit_api.dart
  42. 763
      lib/retrofit/retrofit_api.g.dart
  43. 59
      lib/union/union_details_page.dart
  44. 2
      lib/utils/flutter_utils.dart
  45. 17
      lib/utils/font_weight.dart
  46. 151
      lib/view_widget/item_input_widget.dart
  47. 139
      lib/view_widget/message_item.dart
  48. 2
      lib/view_widget/mine_vip_view.dart
  49. 75
      lib/view_widget/new_coupon_widget.dart
  50. 322
      pubspec.lock
  51. 2
      pubspec.yaml

BIN
assets/image/2x/icon_system_message.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
assets/image/2x/icon_system_order.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 371 B

BIN
assets/image/2x/icon_system_recharge.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
assets/image/3x/icon_system_message.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
assets/image/3x/icon_system_order.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 643 B

BIN
assets/image/3x/icon_system_recharge.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
assets/image/icon_system_message.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 849 B

BIN
assets/image/icon_system_order.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 B

BIN
assets/image/icon_system_recharge.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 525 B

13
lib/generated/intl/messages_en.dart

@ -89,6 +89,8 @@ class MessageLookup extends MessageLookupByLibrary {
"bangong" : MessageLookupByLibrary.simpleMessage("办公"),
"bangzhuyufankui" : MessageLookupByLibrary.simpleMessage("帮助与反馈"),
"beizhu" : MessageLookupByLibrary.simpleMessage("备注"),
"biaojiweiyidu" : MessageLookupByLibrary.simpleMessage("标为已读"),
"bodadianhua" : MessageLookupByLibrary.simpleMessage("拨打电话"),
"brand_yixinhuixiang" : MessageLookupByLibrary.simpleMessage("一心回乡"),
"buzhichikaipiao" : MessageLookupByLibrary.simpleMessage("不支持开票"),
"chakangengduo" : MessageLookupByLibrary.simpleMessage("查看更多"),
@ -101,6 +103,7 @@ class MessageLookup extends MessageLookupByLibrary {
"chenggongdengluzhuce" : MessageLookupByLibrary.simpleMessage("成功登录注册,并绑定相关信息即可成为会员。"),
"chengweidianpuzhuanshuhuiyuan" : MessageLookupByLibrary.simpleMessage("成为店铺专属会员,享专属权益"),
"chongzhi" : MessageLookupByLibrary.simpleMessage("充值"),
"chongzhixiaoxi" : MessageLookupByLibrary.simpleMessage("充值消息"),
"chongzhizuixiaojine" : m1,
"chuangjianshijian" : m2,
"chuangshirendegushi" : MessageLookupByLibrary.simpleMessage("创始人的故事"),
@ -127,6 +130,7 @@ class MessageLookup extends MessageLookupByLibrary {
"dingdandaizhifu" : MessageLookupByLibrary.simpleMessage("订单待支付"),
"dingdanhao" : MessageLookupByLibrary.simpleMessage("订单号"),
"dingdanqueren" : MessageLookupByLibrary.simpleMessage("订单确认"),
"dingdanxiaoxi" : MessageLookupByLibrary.simpleMessage("订单消息"),
"dingdanyisongda" : MessageLookupByLibrary.simpleMessage("订单送达"),
"dingdanyituikuan" : MessageLookupByLibrary.simpleMessage("订单已退款"),
"dingdanyiwancheng" : MessageLookupByLibrary.simpleMessage("订单已完成"),
@ -140,6 +144,7 @@ class MessageLookup extends MessageLookupByLibrary {
"duihuanliangdidaogao" : MessageLookupByLibrary.simpleMessage("兑换量从低到高"),
"duihuanlianggaodaodi" : MessageLookupByLibrary.simpleMessage("兑换量从高到低"),
"duihuanlishi" : MessageLookupByLibrary.simpleMessage("兑换历史"),
"duihuanquan" : MessageLookupByLibrary.simpleMessage("兑换券"),
"duihuanshangpinxiangqing" : MessageLookupByLibrary.simpleMessage("兑换商品详情"),
"duihuanxinxi" : MessageLookupByLibrary.simpleMessage("兑换信息"),
"fanhuiduihuanlishi" : MessageLookupByLibrary.simpleMessage("返回兑换历史"),
@ -155,6 +160,7 @@ class MessageLookup extends MessageLookupByLibrary {
"geiwopingfen" : MessageLookupByLibrary.simpleMessage("给我评分"),
"gengduo" : MessageLookupByLibrary.simpleMessage("更多"),
"gengduoyouhuiquan" : MessageLookupByLibrary.simpleMessage("更多优惠券"),
"genghuantouxiang" : MessageLookupByLibrary.simpleMessage("更换头像"),
"gerenxinxi" : MessageLookupByLibrary.simpleMessage("个人信息"),
"gong" : MessageLookupByLibrary.simpleMessage(""),
"gongjijianshangpin" : m5,
@ -165,6 +171,7 @@ class MessageLookup extends MessageLookupByLibrary {
"guanyu" : MessageLookupByLibrary.simpleMessage("关于"),
"guanyuchuangshiren" : MessageLookupByLibrary.simpleMessage("关于创始人"),
"guojiankangyoujishenghuo" : MessageLookupByLibrary.simpleMessage("过健康有机生活"),
"haimeiyouxiaoxi" : MessageLookupByLibrary.simpleMessage("还没有消息~"),
"haixiajiemei" : MessageLookupByLibrary.simpleMessage("海峡姐妹"),
"haowu" : MessageLookupByLibrary.simpleMessage("好物"),
"heji" : MessageLookupByLibrary.simpleMessage("合计:"),
@ -250,11 +257,13 @@ class MessageLookup extends MessageLookupByLibrary {
"mingxi" : MessageLookupByLibrary.simpleMessage("明细"),
"morenpaixu" : MessageLookupByLibrary.simpleMessage("默认排序"),
"muqianzanwuxingdianhuodong" : MessageLookupByLibrary.simpleMessage("目前暂无星店活动"),
"nihaimeiyouchongzhihuoxiaofeijilu" : MessageLookupByLibrary.simpleMessage("你在这儿还没有消费或充值记录哦~"),
"nindingweigongnengweikaiqi" : MessageLookupByLibrary.simpleMessage("您定位功能开关未开启,请点击去打開定位"),
"nindingweiquanxianweiyunxu" : MessageLookupByLibrary.simpleMessage("您未开启位置权限,请点击确定申请权限"),
"ninweidenglu" : MessageLookupByLibrary.simpleMessage("您未登录,请点击去登录"),
"ninyouyigedingdanyaolingqu" : MessageLookupByLibrary.simpleMessage("您有一个订单需要前往门店领取"),
"ninyouyigexindedingdan" : MessageLookupByLibrary.simpleMessage("您有一个新的订单"),
"paizhao" : MessageLookupByLibrary.simpleMessage("拍照"),
"peisong" : MessageLookupByLibrary.simpleMessage("配送"),
"peisongfangshi" : MessageLookupByLibrary.simpleMessage("配送方式"),
"peisongfei" : MessageLookupByLibrary.simpleMessage("配送费"),
@ -304,6 +313,7 @@ class MessageLookup extends MessageLookupByLibrary {
"querenchongzhi" : MessageLookupByLibrary.simpleMessage("确认充值"),
"querenduihuan" : MessageLookupByLibrary.simpleMessage("确认兑换"),
"querenshouhuo" : MessageLookupByLibrary.simpleMessage("确认收货"),
"quhexiao" : MessageLookupByLibrary.simpleMessage("去核销"),
"quhuozhong" : MessageLookupByLibrary.simpleMessage("取货中"),
"qujianma" : MessageLookupByLibrary.simpleMessage("取件码"),
"quqiandao" : MessageLookupByLibrary.simpleMessage("去签到"),
@ -328,6 +338,7 @@ class MessageLookup extends MessageLookupByLibrary {
"shanglajiazai" : MessageLookupByLibrary.simpleMessage("上拉加载"),
"shangpinjifen" : m20,
"shangpinxiangqing" : MessageLookupByLibrary.simpleMessage("商品详情"),
"shangyidengji" : MessageLookupByLibrary.simpleMessage("上一等级"),
"shenghuoyule" : MessageLookupByLibrary.simpleMessage("生活娱乐"),
"shenmijifendali" : MessageLookupByLibrary.simpleMessage("神秘积分大礼"),
"shenqingtuikuan" : MessageLookupByLibrary.simpleMessage("申请退款"),
@ -388,10 +399,12 @@ class MessageLookup extends MessageLookupByLibrary {
"xiadanshijian" : MessageLookupByLibrary.simpleMessage("下单时间"),
"xiadanshijian_" : m24,
"xialashuaxin" : MessageLookupByLibrary.simpleMessage("下拉刷新"),
"xiangce" : MessageLookupByLibrary.simpleMessage("相册"),
"xiangji" : MessageLookupByLibrary.simpleMessage("相机"),
"xiangjitishixinxi" : MessageLookupByLibrary.simpleMessage("为了您可以在使用过程中进行分享,希望您使用HISAPP时让我们使用相机功能"),
"xiangqing" : MessageLookupByLibrary.simpleMessage("详情"),
"xianshangfafang" : MessageLookupByLibrary.simpleMessage("线上发放"),
"xianxiashiyong" : MessageLookupByLibrary.simpleMessage("线下使用"),
"xiaofei" : MessageLookupByLibrary.simpleMessage("消费"),
"xiaofeijifen" : MessageLookupByLibrary.simpleMessage("消费积分"),
"xiaoxi" : MessageLookupByLibrary.simpleMessage("消息"),

13
lib/generated/intl/messages_zh_CN.dart

@ -89,6 +89,8 @@ class MessageLookup extends MessageLookupByLibrary {
"bangong" : MessageLookupByLibrary.simpleMessage("办公"),
"bangzhuyufankui" : MessageLookupByLibrary.simpleMessage("帮助与反馈"),
"beizhu" : MessageLookupByLibrary.simpleMessage("备注"),
"biaojiweiyidu" : MessageLookupByLibrary.simpleMessage("标为已读"),
"bodadianhua" : MessageLookupByLibrary.simpleMessage("拨打电话"),
"brand_yixinhuixiang" : MessageLookupByLibrary.simpleMessage("一心回乡"),
"buzhichikaipiao" : MessageLookupByLibrary.simpleMessage("不支持开票"),
"chakangengduo" : MessageLookupByLibrary.simpleMessage("查看更多"),
@ -101,6 +103,7 @@ class MessageLookup extends MessageLookupByLibrary {
"chenggongdengluzhuce" : MessageLookupByLibrary.simpleMessage("成功登录注册,并绑定相关信息即可成为会员。"),
"chengweidianpuzhuanshuhuiyuan" : MessageLookupByLibrary.simpleMessage("成为店铺专属会员,享专属权益"),
"chongzhi" : MessageLookupByLibrary.simpleMessage("充值"),
"chongzhixiaoxi" : MessageLookupByLibrary.simpleMessage("充值消息"),
"chongzhizuixiaojine" : m1,
"chuangjianshijian" : m2,
"chuangshirendegushi" : MessageLookupByLibrary.simpleMessage("创始人的故事"),
@ -127,6 +130,7 @@ class MessageLookup extends MessageLookupByLibrary {
"dingdandaizhifu" : MessageLookupByLibrary.simpleMessage("订单待支付"),
"dingdanhao" : MessageLookupByLibrary.simpleMessage("订单号"),
"dingdanqueren" : MessageLookupByLibrary.simpleMessage("订单确认"),
"dingdanxiaoxi" : MessageLookupByLibrary.simpleMessage("订单消息"),
"dingdanyisongda" : MessageLookupByLibrary.simpleMessage("订单送达"),
"dingdanyituikuan" : MessageLookupByLibrary.simpleMessage("订单已退款"),
"dingdanyiwancheng" : MessageLookupByLibrary.simpleMessage("订单已完成"),
@ -140,6 +144,7 @@ class MessageLookup extends MessageLookupByLibrary {
"duihuanliangdidaogao" : MessageLookupByLibrary.simpleMessage("兑换量从低到高"),
"duihuanlianggaodaodi" : MessageLookupByLibrary.simpleMessage("兑换量从高到低"),
"duihuanlishi" : MessageLookupByLibrary.simpleMessage("兑换历史"),
"duihuanquan" : MessageLookupByLibrary.simpleMessage("兑换券"),
"duihuanshangpinxiangqing" : MessageLookupByLibrary.simpleMessage("兑换商品详情"),
"duihuanxinxi" : MessageLookupByLibrary.simpleMessage("兑换信息"),
"fanhuiduihuanlishi" : MessageLookupByLibrary.simpleMessage("返回兑换历史"),
@ -155,6 +160,7 @@ class MessageLookup extends MessageLookupByLibrary {
"geiwopingfen" : MessageLookupByLibrary.simpleMessage("给我评分"),
"gengduo" : MessageLookupByLibrary.simpleMessage("更多"),
"gengduoyouhuiquan" : MessageLookupByLibrary.simpleMessage("更多优惠券"),
"genghuantouxiang" : MessageLookupByLibrary.simpleMessage("更换头像"),
"gerenxinxi" : MessageLookupByLibrary.simpleMessage("个人信息"),
"gong" : MessageLookupByLibrary.simpleMessage(""),
"gongjijianshangpin" : m5,
@ -164,6 +170,7 @@ class MessageLookup extends MessageLookupByLibrary {
"guanlidizhi" : MessageLookupByLibrary.simpleMessage("管理地址"),
"guanyu" : MessageLookupByLibrary.simpleMessage("关于"),
"guojiankangyoujishenghuo" : MessageLookupByLibrary.simpleMessage("过健康有机生活"),
"haimeiyouxiaoxi" : MessageLookupByLibrary.simpleMessage("还没有消息~"),
"haixiajiemei" : MessageLookupByLibrary.simpleMessage("海峡姐妹"),
"haowu" : MessageLookupByLibrary.simpleMessage("好物"),
"heji" : MessageLookupByLibrary.simpleMessage("合计:"),
@ -249,11 +256,13 @@ class MessageLookup extends MessageLookupByLibrary {
"mingxi" : MessageLookupByLibrary.simpleMessage("明细"),
"morenpaixu" : MessageLookupByLibrary.simpleMessage("默认排序"),
"muqianzanwuxingdianhuodong" : MessageLookupByLibrary.simpleMessage("目前暂无星店活动"),
"nihaimeiyouchongzhihuoxiaofeijilu" : MessageLookupByLibrary.simpleMessage("你在这儿还没有消费或充值记录哦~"),
"nindingweigongnengweikaiqi" : MessageLookupByLibrary.simpleMessage("您定位功能开关未开启,请点击去打開定位"),
"nindingweiquanxianweiyunxu" : MessageLookupByLibrary.simpleMessage("您未开启位置权限,请点击确定申请权限"),
"ninweidenglu" : MessageLookupByLibrary.simpleMessage("您未登录,请点击去登录"),
"ninyouyigedingdanyaolingqu" : MessageLookupByLibrary.simpleMessage("您有一个订单需要前往门店领取"),
"ninyouyigexindedingdan" : MessageLookupByLibrary.simpleMessage("您有一个新的订单"),
"paizhao" : MessageLookupByLibrary.simpleMessage("拍照"),
"peisong" : MessageLookupByLibrary.simpleMessage("配送"),
"peisongfangshi" : MessageLookupByLibrary.simpleMessage("配送方式"),
"peisongfei" : MessageLookupByLibrary.simpleMessage("配送费"),
@ -303,6 +312,7 @@ class MessageLookup extends MessageLookupByLibrary {
"querenchongzhi" : MessageLookupByLibrary.simpleMessage("确认充值"),
"querenduihuan" : MessageLookupByLibrary.simpleMessage("确认兑换"),
"querenshouhuo" : MessageLookupByLibrary.simpleMessage("确认收货"),
"quhexiao" : MessageLookupByLibrary.simpleMessage("去核销"),
"quhuozhong" : MessageLookupByLibrary.simpleMessage("取货中"),
"qujianma" : MessageLookupByLibrary.simpleMessage("取件码"),
"quqiandao" : MessageLookupByLibrary.simpleMessage("去签到"),
@ -327,6 +337,7 @@ class MessageLookup extends MessageLookupByLibrary {
"shanglajiazai" : MessageLookupByLibrary.simpleMessage("上拉加载"),
"shangpinjifen" : m20,
"shangpinxiangqing" : MessageLookupByLibrary.simpleMessage("商品详情"),
"shangyidengji" : MessageLookupByLibrary.simpleMessage("上一等级"),
"shenghuoyule" : MessageLookupByLibrary.simpleMessage("生活娱乐"),
"shenmijifendali" : MessageLookupByLibrary.simpleMessage("神秘积分大礼"),
"shenqingtuikuan" : MessageLookupByLibrary.simpleMessage("申请退款"),
@ -387,10 +398,12 @@ class MessageLookup extends MessageLookupByLibrary {
"xiadanshijian" : MessageLookupByLibrary.simpleMessage("下单时间"),
"xiadanshijian_" : m24,
"xialashuaxin" : MessageLookupByLibrary.simpleMessage("下拉刷新"),
"xiangce" : MessageLookupByLibrary.simpleMessage("相册"),
"xiangji" : MessageLookupByLibrary.simpleMessage("相机"),
"xiangjitishixinxi" : MessageLookupByLibrary.simpleMessage("为了您可以在使用过程中进行分享,希望您使用HISAPP时让我们使用相机功能"),
"xiangqing" : MessageLookupByLibrary.simpleMessage("详情"),
"xianshangfafang" : MessageLookupByLibrary.simpleMessage("线上发放"),
"xianxiashiyong" : MessageLookupByLibrary.simpleMessage("线下使用"),
"xiaofei" : MessageLookupByLibrary.simpleMessage("消费"),
"xiaofeijifen" : MessageLookupByLibrary.simpleMessage("消费积分"),
"xiaoxi" : MessageLookupByLibrary.simpleMessage("消息"),

13
lib/generated/intl/messages_zh_Hans_CN.dart

@ -89,6 +89,8 @@ class MessageLookup extends MessageLookupByLibrary {
"bangong" : MessageLookupByLibrary.simpleMessage("办公"),
"bangzhuyufankui" : MessageLookupByLibrary.simpleMessage("帮助与反馈"),
"beizhu" : MessageLookupByLibrary.simpleMessage("备注"),
"biaojiweiyidu" : MessageLookupByLibrary.simpleMessage("标为已读"),
"bodadianhua" : MessageLookupByLibrary.simpleMessage("拨打电话"),
"brand_yixinhuixiang" : MessageLookupByLibrary.simpleMessage("一心回乡"),
"buzhichikaipiao" : MessageLookupByLibrary.simpleMessage("不支持开票"),
"chakangengduo" : MessageLookupByLibrary.simpleMessage("查看更多"),
@ -101,6 +103,7 @@ class MessageLookup extends MessageLookupByLibrary {
"chenggongdengluzhuce" : MessageLookupByLibrary.simpleMessage("成功登录注册,并绑定相关信息即可成为会员。"),
"chengweidianpuzhuanshuhuiyuan" : MessageLookupByLibrary.simpleMessage("成为店铺专属会员,享专属权益"),
"chongzhi" : MessageLookupByLibrary.simpleMessage("充值"),
"chongzhixiaoxi" : MessageLookupByLibrary.simpleMessage("充值消息"),
"chongzhizuixiaojine" : m1,
"chuangjianshijian" : m2,
"chuangshirendegushi" : MessageLookupByLibrary.simpleMessage("创始人的故事"),
@ -127,6 +130,7 @@ class MessageLookup extends MessageLookupByLibrary {
"dingdandaizhifu" : MessageLookupByLibrary.simpleMessage("订单待支付"),
"dingdanhao" : MessageLookupByLibrary.simpleMessage("订单号"),
"dingdanqueren" : MessageLookupByLibrary.simpleMessage("订单确认"),
"dingdanxiaoxi" : MessageLookupByLibrary.simpleMessage("订单消息"),
"dingdanyisongda" : MessageLookupByLibrary.simpleMessage("订单送达"),
"dingdanyituikuan" : MessageLookupByLibrary.simpleMessage("订单已退款"),
"dingdanyiwancheng" : MessageLookupByLibrary.simpleMessage("订单已完成"),
@ -140,6 +144,7 @@ class MessageLookup extends MessageLookupByLibrary {
"duihuanliangdidaogao" : MessageLookupByLibrary.simpleMessage("兑换量从低到高"),
"duihuanlianggaodaodi" : MessageLookupByLibrary.simpleMessage("兑换量从高到低"),
"duihuanlishi" : MessageLookupByLibrary.simpleMessage("兑换历史"),
"duihuanquan" : MessageLookupByLibrary.simpleMessage("兑换券"),
"duihuanshangpinxiangqing" : MessageLookupByLibrary.simpleMessage("兑换商品详情"),
"duihuanxinxi" : MessageLookupByLibrary.simpleMessage("兑换信息"),
"fanhuiduihuanlishi" : MessageLookupByLibrary.simpleMessage("返回兑换历史"),
@ -155,6 +160,7 @@ class MessageLookup extends MessageLookupByLibrary {
"geiwopingfen" : MessageLookupByLibrary.simpleMessage("给我评分"),
"gengduo" : MessageLookupByLibrary.simpleMessage("更多"),
"gengduoyouhuiquan" : MessageLookupByLibrary.simpleMessage("更多优惠券"),
"genghuantouxiang" : MessageLookupByLibrary.simpleMessage("更换头像"),
"gerenxinxi" : MessageLookupByLibrary.simpleMessage("个人信息"),
"gong" : MessageLookupByLibrary.simpleMessage(""),
"gongjijianshangpin" : m5,
@ -164,6 +170,7 @@ class MessageLookup extends MessageLookupByLibrary {
"guanlidizhi" : MessageLookupByLibrary.simpleMessage("管理地址"),
"guanyu" : MessageLookupByLibrary.simpleMessage("关于"),
"guojiankangyoujishenghuo" : MessageLookupByLibrary.simpleMessage("过健康有机生活"),
"haimeiyouxiaoxi" : MessageLookupByLibrary.simpleMessage("还没有消息~"),
"haixiajiemei" : MessageLookupByLibrary.simpleMessage("海峡姐妹"),
"haowu" : MessageLookupByLibrary.simpleMessage("好物"),
"heji" : MessageLookupByLibrary.simpleMessage("合计:"),
@ -249,11 +256,13 @@ class MessageLookup extends MessageLookupByLibrary {
"mingxi" : MessageLookupByLibrary.simpleMessage("明细"),
"morenpaixu" : MessageLookupByLibrary.simpleMessage("默认排序"),
"muqianzanwuxingdianhuodong" : MessageLookupByLibrary.simpleMessage("目前暂无星店活动"),
"nihaimeiyouchongzhihuoxiaofeijilu" : MessageLookupByLibrary.simpleMessage("你在这儿还没有消费或充值记录哦~"),
"nindingweigongnengweikaiqi" : MessageLookupByLibrary.simpleMessage("您定位功能开关未开启,请点击去打開定位"),
"nindingweiquanxianweiyunxu" : MessageLookupByLibrary.simpleMessage("您未开启位置权限,请点击确定申请权限"),
"ninweidenglu" : MessageLookupByLibrary.simpleMessage("您未登录,请点击去登录"),
"ninyouyigedingdanyaolingqu" : MessageLookupByLibrary.simpleMessage("您有一个订单需要前往门店领取"),
"ninyouyigexindedingdan" : MessageLookupByLibrary.simpleMessage("您有一个新的订单"),
"paizhao" : MessageLookupByLibrary.simpleMessage("拍照"),
"peisong" : MessageLookupByLibrary.simpleMessage("配送"),
"peisongfangshi" : MessageLookupByLibrary.simpleMessage("配送方式"),
"peisongfei" : MessageLookupByLibrary.simpleMessage("配送费"),
@ -303,6 +312,7 @@ class MessageLookup extends MessageLookupByLibrary {
"querenchongzhi" : MessageLookupByLibrary.simpleMessage("确认充值"),
"querenduihuan" : MessageLookupByLibrary.simpleMessage("确认兑换"),
"querenshouhuo" : MessageLookupByLibrary.simpleMessage("确认收货"),
"quhexiao" : MessageLookupByLibrary.simpleMessage("去核销"),
"quhuozhong" : MessageLookupByLibrary.simpleMessage("取货中"),
"qujianma" : MessageLookupByLibrary.simpleMessage("取件码"),
"quqiandao" : MessageLookupByLibrary.simpleMessage("去签到"),
@ -327,6 +337,7 @@ class MessageLookup extends MessageLookupByLibrary {
"shanglajiazai" : MessageLookupByLibrary.simpleMessage("上拉加载"),
"shangpinjifen" : m20,
"shangpinxiangqing" : MessageLookupByLibrary.simpleMessage("商品详情"),
"shangyidengji" : MessageLookupByLibrary.simpleMessage("上一等级"),
"shenghuoyule" : MessageLookupByLibrary.simpleMessage("生活娱乐"),
"shenmijifendali" : MessageLookupByLibrary.simpleMessage("神秘积分大礼"),
"shenqingtuikuan" : MessageLookupByLibrary.simpleMessage("申请退款"),
@ -387,10 +398,12 @@ class MessageLookup extends MessageLookupByLibrary {
"xiadanshijian" : MessageLookupByLibrary.simpleMessage("下单时间"),
"xiadanshijian_" : m24,
"xialashuaxin" : MessageLookupByLibrary.simpleMessage("下拉刷新"),
"xiangce" : MessageLookupByLibrary.simpleMessage("相册"),
"xiangji" : MessageLookupByLibrary.simpleMessage("相机"),
"xiangjitishixinxi" : MessageLookupByLibrary.simpleMessage("为了您可以在使用过程中进行分享,希望您使用HISAPP时让我们使用相机功能"),
"xiangqing" : MessageLookupByLibrary.simpleMessage("详情"),
"xianshangfafang" : MessageLookupByLibrary.simpleMessage("线上发放"),
"xianxiashiyong" : MessageLookupByLibrary.simpleMessage("线下使用"),
"xiaofei" : MessageLookupByLibrary.simpleMessage("消费"),
"xiaofeijifen" : MessageLookupByLibrary.simpleMessage("消费积分"),
"xiaoxi" : MessageLookupByLibrary.simpleMessage("消息"),

15
lib/generated/intl/messages_zh_Hant_CN.dart

@ -89,6 +89,8 @@ class MessageLookup extends MessageLookupByLibrary {
"bangong" : MessageLookupByLibrary.simpleMessage("辦公"),
"bangzhuyufankui" : MessageLookupByLibrary.simpleMessage("幫助與反饋"),
"beizhu" : MessageLookupByLibrary.simpleMessage("備注"),
"biaojiweiyidu" : MessageLookupByLibrary.simpleMessage("標為已讀"),
"bodadianhua" : MessageLookupByLibrary.simpleMessage("撥打電話"),
"brand_yixinhuixiang" : MessageLookupByLibrary.simpleMessage("一心回鄉"),
"buzhichikaipiao" : MessageLookupByLibrary.simpleMessage("不支持開票"),
"chakangengduo" : MessageLookupByLibrary.simpleMessage("查看更多"),
@ -101,6 +103,7 @@ class MessageLookup extends MessageLookupByLibrary {
"chenggongdengluzhuce" : MessageLookupByLibrary.simpleMessage("成功登录注册,并绑定相关信息即可成为会员。"),
"chengweidianpuzhuanshuhuiyuan" : MessageLookupByLibrary.simpleMessage("成為專屬會員,享專屬權益"),
"chongzhi" : MessageLookupByLibrary.simpleMessage("充值"),
"chongzhixiaoxi" : MessageLookupByLibrary.simpleMessage("充值消息"),
"chongzhizuixiaojine" : m1,
"chuangjianshijian" : m2,
"chuangshirendegushi" : MessageLookupByLibrary.simpleMessage("創始人的故事"),
@ -127,6 +130,7 @@ class MessageLookup extends MessageLookupByLibrary {
"dingdandaizhifu" : MessageLookupByLibrary.simpleMessage("訂單待支付"),
"dingdanhao" : MessageLookupByLibrary.simpleMessage("訂單號"),
"dingdanqueren" : MessageLookupByLibrary.simpleMessage("订单确认"),
"dingdanxiaoxi" : MessageLookupByLibrary.simpleMessage("訂單消息"),
"dingdanyisongda" : MessageLookupByLibrary.simpleMessage("訂單送達"),
"dingdanyituikuan" : MessageLookupByLibrary.simpleMessage("訂單已退款"),
"dingdanyiwancheng" : MessageLookupByLibrary.simpleMessage("訂單已完成"),
@ -140,6 +144,7 @@ class MessageLookup extends MessageLookupByLibrary {
"duihuanliangdidaogao" : MessageLookupByLibrary.simpleMessage("兌換量從低到高"),
"duihuanlianggaodaodi" : MessageLookupByLibrary.simpleMessage("兌換量從高到低"),
"duihuanlishi" : MessageLookupByLibrary.simpleMessage("兌換歷史"),
"duihuanquan" : MessageLookupByLibrary.simpleMessage("兌換券"),
"duihuanshangpinxiangqing" : MessageLookupByLibrary.simpleMessage("兑换商品详情"),
"duihuanxinxi" : MessageLookupByLibrary.simpleMessage("兑换信息"),
"fanhuiduihuanlishi" : MessageLookupByLibrary.simpleMessage("返回兌換歷史"),
@ -155,6 +160,7 @@ class MessageLookup extends MessageLookupByLibrary {
"geiwopingfen" : MessageLookupByLibrary.simpleMessage("給我評分"),
"gengduo" : MessageLookupByLibrary.simpleMessage("更多"),
"gengduoyouhuiquan" : MessageLookupByLibrary.simpleMessage("更多優惠券"),
"genghuantouxiang" : MessageLookupByLibrary.simpleMessage("更换头像"),
"gerenxinxi" : MessageLookupByLibrary.simpleMessage("個人信息"),
"gong" : MessageLookupByLibrary.simpleMessage(""),
"gongjijianshangpin" : m5,
@ -164,6 +170,7 @@ class MessageLookup extends MessageLookupByLibrary {
"guanlidizhi" : MessageLookupByLibrary.simpleMessage("管理地址"),
"guanyu" : MessageLookupByLibrary.simpleMessage("關於"),
"guojiankangyoujishenghuo" : MessageLookupByLibrary.simpleMessage("過健康有機生活"),
"haimeiyouxiaoxi" : MessageLookupByLibrary.simpleMessage("還沒有消息~"),
"haixiajiemei" : MessageLookupByLibrary.simpleMessage("海峽姐妹"),
"haowu" : MessageLookupByLibrary.simpleMessage("好物"),
"heji" : MessageLookupByLibrary.simpleMessage("合計:"),
@ -249,11 +256,13 @@ class MessageLookup extends MessageLookupByLibrary {
"mingxi" : MessageLookupByLibrary.simpleMessage("明細"),
"morenpaixu" : MessageLookupByLibrary.simpleMessage("默認排序"),
"muqianzanwuxingdianhuodong" : MessageLookupByLibrary.simpleMessage("目前暫無星店活動"),
"nihaimeiyouchongzhihuoxiaofeijilu" : MessageLookupByLibrary.simpleMessage("你在這兒還沒有消費或充值紀錄喔~"),
"nindingweigongnengweikaiqi" : MessageLookupByLibrary.simpleMessage("您定位功能開關未開啟,請點擊去開啟定位"),
"nindingweiquanxianweiyunxu" : MessageLookupByLibrary.simpleMessage("您未开启位置权限,请点击确定申请权限"),
"ninweidenglu" : MessageLookupByLibrary.simpleMessage("您未登錄,請點擊去登錄"),
"ninyouyigedingdanyaolingqu" : MessageLookupByLibrary.simpleMessage("您有一個訂單需要前往門店領取"),
"ninyouyigexindedingdan" : MessageLookupByLibrary.simpleMessage("您有一個新訂單"),
"paizhao" : MessageLookupByLibrary.simpleMessage("拍照"),
"peisong" : MessageLookupByLibrary.simpleMessage("配送"),
"peisongfangshi" : MessageLookupByLibrary.simpleMessage("配送方式"),
"peisongfei" : MessageLookupByLibrary.simpleMessage("配送費"),
@ -303,6 +312,7 @@ class MessageLookup extends MessageLookupByLibrary {
"querenchongzhi" : MessageLookupByLibrary.simpleMessage("確認充值"),
"querenduihuan" : MessageLookupByLibrary.simpleMessage("确认兑换"),
"querenshouhuo" : MessageLookupByLibrary.simpleMessage("確認收貨"),
"quhexiao" : MessageLookupByLibrary.simpleMessage("去核銷"),
"quhuozhong" : MessageLookupByLibrary.simpleMessage("取貨中"),
"qujianma" : MessageLookupByLibrary.simpleMessage("取件碼"),
"quqiandao" : MessageLookupByLibrary.simpleMessage("去簽到"),
@ -327,6 +337,7 @@ class MessageLookup extends MessageLookupByLibrary {
"shanglajiazai" : MessageLookupByLibrary.simpleMessage("上拉加載"),
"shangpinjifen" : m20,
"shangpinxiangqing" : MessageLookupByLibrary.simpleMessage("商品詳情"),
"shangyidengji" : MessageLookupByLibrary.simpleMessage("上一等級"),
"shenghuoyule" : MessageLookupByLibrary.simpleMessage("生活娛樂"),
"shenmijifendali" : MessageLookupByLibrary.simpleMessage("神秘積分大禮"),
"shenqingtuikuan" : MessageLookupByLibrary.simpleMessage("申請退款"),
@ -387,16 +398,18 @@ class MessageLookup extends MessageLookupByLibrary {
"xiadanshijian" : MessageLookupByLibrary.simpleMessage("下單時間"),
"xiadanshijian_" : m24,
"xialashuaxin" : MessageLookupByLibrary.simpleMessage("下拉刷新"),
"xiangce" : MessageLookupByLibrary.simpleMessage("相冊"),
"xiangji" : MessageLookupByLibrary.simpleMessage("相機"),
"xiangjitishixinxi" : MessageLookupByLibrary.simpleMessage("為了您可以在使用過程中進行分享,希望您使用HISAPP時讓我們使用相機功能 "),
"xiangqing" : MessageLookupByLibrary.simpleMessage("詳情"),
"xianshangfafang" : MessageLookupByLibrary.simpleMessage("綫上發放"),
"xianxiashiyong" : MessageLookupByLibrary.simpleMessage("線下使用"),
"xiaofei" : MessageLookupByLibrary.simpleMessage("消費"),
"xiaofeijifen" : MessageLookupByLibrary.simpleMessage("消费积分"),
"xiaoxi" : MessageLookupByLibrary.simpleMessage("消息"),
"xiayidengji" : MessageLookupByLibrary.simpleMessage("下一等級"),
"xindianhuodong" : MessageLookupByLibrary.simpleMessage("星店活動"),
"xitongtongzhi" : MessageLookupByLibrary.simpleMessage("通知"),
"xitongtongzhi" : MessageLookupByLibrary.simpleMessage("通知"),
"xitongxiaoxi" : MessageLookupByLibrary.simpleMessage("系統消息"),
"xuni" : MessageLookupByLibrary.simpleMessage("虛擬"),
"yiduihuan" : MessageLookupByLibrary.simpleMessage("已兌換"),

15
lib/generated/intl/messages_zh_TW.dart

@ -89,6 +89,8 @@ class MessageLookup extends MessageLookupByLibrary {
"bangong" : MessageLookupByLibrary.simpleMessage("辦公"),
"bangzhuyufankui" : MessageLookupByLibrary.simpleMessage("幫助與反饋"),
"beizhu" : MessageLookupByLibrary.simpleMessage("備注"),
"biaojiweiyidu" : MessageLookupByLibrary.simpleMessage("標為已讀"),
"bodadianhua" : MessageLookupByLibrary.simpleMessage("撥打電話"),
"brand_yixinhuixiang" : MessageLookupByLibrary.simpleMessage("一心回鄉"),
"buzhichikaipiao" : MessageLookupByLibrary.simpleMessage("不支持開票"),
"chakangengduo" : MessageLookupByLibrary.simpleMessage("查看更多"),
@ -101,6 +103,7 @@ class MessageLookup extends MessageLookupByLibrary {
"chenggongdengluzhuce" : MessageLookupByLibrary.simpleMessage("成功登录注册,并绑定相关信息即可成为会员。"),
"chengweidianpuzhuanshuhuiyuan" : MessageLookupByLibrary.simpleMessage("成為專屬會員,享專屬權益"),
"chongzhi" : MessageLookupByLibrary.simpleMessage("充值"),
"chongzhixiaoxi" : MessageLookupByLibrary.simpleMessage("充值消息"),
"chongzhizuixiaojine" : m1,
"chuangjianshijian" : m2,
"chuangshirendegushi" : MessageLookupByLibrary.simpleMessage("創始人的故事"),
@ -127,6 +130,7 @@ class MessageLookup extends MessageLookupByLibrary {
"dingdandaizhifu" : MessageLookupByLibrary.simpleMessage("訂單待支付"),
"dingdanhao" : MessageLookupByLibrary.simpleMessage("訂單號"),
"dingdanqueren" : MessageLookupByLibrary.simpleMessage("订单确认"),
"dingdanxiaoxi" : MessageLookupByLibrary.simpleMessage("訂單消息"),
"dingdanyisongda" : MessageLookupByLibrary.simpleMessage("訂單送達"),
"dingdanyituikuan" : MessageLookupByLibrary.simpleMessage("訂單已退款"),
"dingdanyiwancheng" : MessageLookupByLibrary.simpleMessage("訂單已完成"),
@ -140,6 +144,7 @@ class MessageLookup extends MessageLookupByLibrary {
"duihuanliangdidaogao" : MessageLookupByLibrary.simpleMessage("兌換量從低到高"),
"duihuanlianggaodaodi" : MessageLookupByLibrary.simpleMessage("兌換量從高到低"),
"duihuanlishi" : MessageLookupByLibrary.simpleMessage("兌換歷史"),
"duihuanquan" : MessageLookupByLibrary.simpleMessage("兌換券"),
"duihuanshangpinxiangqing" : MessageLookupByLibrary.simpleMessage("兑换商品详情"),
"duihuanxinxi" : MessageLookupByLibrary.simpleMessage("兑换信息"),
"fanhuiduihuanlishi" : MessageLookupByLibrary.simpleMessage("返回兌換歷史"),
@ -155,6 +160,7 @@ class MessageLookup extends MessageLookupByLibrary {
"geiwopingfen" : MessageLookupByLibrary.simpleMessage("給我評分"),
"gengduo" : MessageLookupByLibrary.simpleMessage("更多"),
"gengduoyouhuiquan" : MessageLookupByLibrary.simpleMessage("更多優惠券"),
"genghuantouxiang" : MessageLookupByLibrary.simpleMessage("更換頭像"),
"gerenxinxi" : MessageLookupByLibrary.simpleMessage("個人信息"),
"gong" : MessageLookupByLibrary.simpleMessage(""),
"gongjijianshangpin" : m5,
@ -164,6 +170,7 @@ class MessageLookup extends MessageLookupByLibrary {
"guanlidizhi" : MessageLookupByLibrary.simpleMessage("管理地址"),
"guanyu" : MessageLookupByLibrary.simpleMessage("關於"),
"guojiankangyoujishenghuo" : MessageLookupByLibrary.simpleMessage("過健康有機生活"),
"haimeiyouxiaoxi" : MessageLookupByLibrary.simpleMessage("還沒有消息~"),
"haixiajiemei" : MessageLookupByLibrary.simpleMessage("海峽姐妹"),
"haowu" : MessageLookupByLibrary.simpleMessage("好物"),
"heji" : MessageLookupByLibrary.simpleMessage("合計:"),
@ -249,11 +256,13 @@ class MessageLookup extends MessageLookupByLibrary {
"mingxi" : MessageLookupByLibrary.simpleMessage("明細"),
"morenpaixu" : MessageLookupByLibrary.simpleMessage("默認排序"),
"muqianzanwuxingdianhuodong" : MessageLookupByLibrary.simpleMessage("目前暫無星店活動"),
"nihaimeiyouchongzhihuoxiaofeijilu" : MessageLookupByLibrary.simpleMessage("你在這兒還沒有消費或充值紀錄喔~"),
"nindingweigongnengweikaiqi" : MessageLookupByLibrary.simpleMessage("您定位功能開關未開啟,請點擊去開啟定位"),
"nindingweiquanxianweiyunxu" : MessageLookupByLibrary.simpleMessage("您未开启位置权限,请点击确定申请权限"),
"ninweidenglu" : MessageLookupByLibrary.simpleMessage("您未登錄,請點擊去登錄"),
"ninyouyigedingdanyaolingqu" : MessageLookupByLibrary.simpleMessage("您有一個訂單需要前往門店領取"),
"ninyouyigexindedingdan" : MessageLookupByLibrary.simpleMessage("您有一個新訂單"),
"paizhao" : MessageLookupByLibrary.simpleMessage("拍照"),
"peisong" : MessageLookupByLibrary.simpleMessage("配送"),
"peisongfangshi" : MessageLookupByLibrary.simpleMessage("配送方式"),
"peisongfei" : MessageLookupByLibrary.simpleMessage("配送費"),
@ -303,6 +312,7 @@ class MessageLookup extends MessageLookupByLibrary {
"querenchongzhi" : MessageLookupByLibrary.simpleMessage("確認充值"),
"querenduihuan" : MessageLookupByLibrary.simpleMessage("确认兑换"),
"querenshouhuo" : MessageLookupByLibrary.simpleMessage("確認收貨"),
"quhexiao" : MessageLookupByLibrary.simpleMessage("去核銷"),
"quhuozhong" : MessageLookupByLibrary.simpleMessage("取貨中"),
"qujianma" : MessageLookupByLibrary.simpleMessage("取件碼"),
"quqiandao" : MessageLookupByLibrary.simpleMessage("去簽到"),
@ -327,6 +337,7 @@ class MessageLookup extends MessageLookupByLibrary {
"shanglajiazai" : MessageLookupByLibrary.simpleMessage("上拉加載"),
"shangpinjifen" : m20,
"shangpinxiangqing" : MessageLookupByLibrary.simpleMessage("商品詳情"),
"shangyidengji" : MessageLookupByLibrary.simpleMessage("上一等級"),
"shenghuoyule" : MessageLookupByLibrary.simpleMessage("生活娛樂"),
"shenmijifendali" : MessageLookupByLibrary.simpleMessage("神秘積分大禮"),
"shenqingtuikuan" : MessageLookupByLibrary.simpleMessage("申請退款"),
@ -387,16 +398,18 @@ class MessageLookup extends MessageLookupByLibrary {
"xiadanshijian" : MessageLookupByLibrary.simpleMessage("下單時間"),
"xiadanshijian_" : m24,
"xialashuaxin" : MessageLookupByLibrary.simpleMessage("下拉刷新"),
"xiangce" : MessageLookupByLibrary.simpleMessage("相冊"),
"xiangji" : MessageLookupByLibrary.simpleMessage("相機"),
"xiangjitishixinxi" : MessageLookupByLibrary.simpleMessage("為了您可以在使用過程中進行分享,希望您使用HISAPP時讓我們使用相機功能 "),
"xiangqing" : MessageLookupByLibrary.simpleMessage("詳情"),
"xianshangfafang" : MessageLookupByLibrary.simpleMessage("綫上發放"),
"xianxiashiyong" : MessageLookupByLibrary.simpleMessage("線下使用"),
"xiaofei" : MessageLookupByLibrary.simpleMessage("消費"),
"xiaofeijifen" : MessageLookupByLibrary.simpleMessage("消费积分"),
"xiaoxi" : MessageLookupByLibrary.simpleMessage("消息"),
"xiayidengji" : MessageLookupByLibrary.simpleMessage("下一等級"),
"xindianhuodong" : MessageLookupByLibrary.simpleMessage("星店活動"),
"xitongtongzhi" : MessageLookupByLibrary.simpleMessage("通知"),
"xitongtongzhi" : MessageLookupByLibrary.simpleMessage("通知"),
"xitongxiaoxi" : MessageLookupByLibrary.simpleMessage("系統消息"),
"xuni" : MessageLookupByLibrary.simpleMessage("虛擬"),
"yiduihuan" : MessageLookupByLibrary.simpleMessage("已兌換"),

130
lib/generated/l10n.dart

@ -3795,6 +3795,116 @@ class S {
);
}
/// ``
String get shangyidengji {
return Intl.message(
'上一等级',
name: 'shangyidengji',
desc: '',
args: [],
);
}
/// ``
String get bodadianhua {
return Intl.message(
'拨打电话',
name: 'bodadianhua',
desc: '',
args: [],
);
}
/// ``
String get genghuantouxiang {
return Intl.message(
'更换头像',
name: 'genghuantouxiang',
desc: '',
args: [],
);
}
/// ``
String get paizhao {
return Intl.message(
'拍照',
name: 'paizhao',
desc: '',
args: [],
);
}
/// ``
String get xiangce {
return Intl.message(
'相册',
name: 'xiangce',
desc: '',
args: [],
);
}
/// `线使`
String get xianxiashiyong {
return Intl.message(
'线下使用',
name: 'xianxiashiyong',
desc: '',
args: [],
);
}
/// ``
String get duihuanquan {
return Intl.message(
'兑换券',
name: 'duihuanquan',
desc: '',
args: [],
);
}
/// ``
String get quhexiao {
return Intl.message(
'去核销',
name: 'quhexiao',
desc: '',
args: [],
);
}
/// ``
String get biaojiweiyidu {
return Intl.message(
'标为已读',
name: 'biaojiweiyidu',
desc: '',
args: [],
);
}
/// ``
String get dingdanxiaoxi {
return Intl.message(
'订单消息',
name: 'dingdanxiaoxi',
desc: '',
args: [],
);
}
/// ``
String get chongzhixiaoxi {
return Intl.message(
'充值消息',
name: 'chongzhixiaoxi',
desc: '',
args: [],
);
}
/// ``
String get shuaxin {
return Intl.message(
@ -3815,6 +3925,26 @@ class S {
);
}
/// ``
String get nihaimeiyouchongzhihuoxiaofeijilu {
return Intl.message(
'你在这儿还没有消费或充值记录哦~',
name: 'nihaimeiyouchongzhihuoxiaofeijilu',
desc: '',
args: [],
);
}
/// ``
String get haimeiyouxiaoxi {
return Intl.message(
'还没有消息~',
name: 'haimeiyouxiaoxi',
desc: '',
args: [],
);
}
/// `使`
String get privacy_policy4 {
return Intl.message(

4
lib/home/home_page.dart

@ -136,9 +136,7 @@ class _HomePage extends State<HomePage> with AutomaticKeepAliveClientMixin {
gooods.addAll(page.list.map((e) => Goods.fromJson(e)));
setState(() {});
}
Future.delayed(Duration(milliseconds: 800), () {
SmartDialog.dismiss();
});
SmartDialog.dismiss();
if (baseData != null && baseData.isSuccess) {
refreshController.refreshCompleted();
if (mounted) setState(() {});

13
lib/home/main_home_page.dart

@ -60,14 +60,15 @@ class _MainHomePage extends State<MainHomePage>
automaticallyImplyLeading: false,
actions: [
Container(
margin: EdgeInsets.only(right: 17),
margin: EdgeInsets.only(right: 17.w),
child: GestureDetector(
onTap: () {
Navigator.of(context).pushNamed("/router/msg_page");
// Navigator.of(context).pushNamed("/router/msg_page");
Navigator.of(context).pushNamed('/router/system_msg_page');
},
child: Image.asset(
"assets/image/icon_notices.png",
width: 24,
width: 24.w,
height: 24.h,
),
),
@ -79,15 +80,15 @@ class _MainHomePage extends State<MainHomePage>
isScrollable: true,
indicatorWeight: 2,
indicatorColor: Color(0xFF39B54A),
labelPadding: EdgeInsets.only(left: 8, right: 8),
labelPadding: EdgeInsets.only(left: 8.w, right: 8.w),
indicatorSize: TabBarIndicatorSize.label,
unselectedLabelStyle: TextStyle(
fontSize: 16,
fontSize: 16.sp,
fontWeight: FontWeight.normal,
),
labelStyle: TextStyle(
color: Colors.black,
fontSize: 17,
fontSize: 17.sp,
fontWeight: FontWeight.bold,
),
labelColor: Colors.black,

65
lib/home/points_mall_page.dart

@ -10,6 +10,7 @@ import 'package:huixiang/main.dart';
import 'package:huixiang/retrofit/data/banner.dart';
import 'package:huixiang/retrofit/data/base_data.dart';
import 'package:huixiang/retrofit/data/goods.dart';
import 'package:huixiang/retrofit/data/goods_category.dart';
import 'package:huixiang/retrofit/data/page.dart';
import 'package:huixiang/retrofit/data/user_info.dart';
import 'package:huixiang/retrofit/retrofit_api.dart';
@ -73,7 +74,8 @@ class _PointsMallPage extends State<PointsMallPage>
refreshUserInfo() {
SharedPreferences.getInstance().then((value) => {
client = ApiService(Dio(),
context: context, token: value.getString('token')),
context: context, token: value.getString('token'), showLoading: false),
SmartDialog.showLoading(msg: S.current.zhengzaijiazai),
creditGoods(categoryId),
queryUser(),
});
@ -87,7 +89,8 @@ class _PointsMallPage extends State<PointsMallPage>
//
bool orderDesc = true;
PageInfo page;
List<Goods> gooods = [];
List<Goods> goods = [];
List<GoodsCategory> gooodsCategorys = [];
UserInfo userinfo;
List<BannerData> bannerData = [];
@ -115,6 +118,25 @@ class _PointsMallPage extends State<PointsMallPage>
}
creditGoods(categoryId) async {
BaseData dataCategory = await client.goodsCategory({
"current": 1,
"map": {},
"model": {"pageNum": 1, "pageSize": 20, "searchKey": ""},
"order": "descending",
"size": 20,
"sort": "id"
}).catchError((onError) {
_refreshController.loadFailed();
_refreshController.refreshFailed();
});
if (dataCategory != null && dataCategory.isSuccess) {
PageInfo pageInfo = PageInfo.fromJson(dataCategory.data);
gooodsCategorys.clear();
gooodsCategorys.add(GoodsCategory(name: S.of(context).quanbu));
gooodsCategorys.addAll(pageInfo.records.map((e) => GoodsCategory.fromJson(e)).toList());
}
var param = {
"categoryId": categoryId ?? "",
"orderDesc": orderDesc,
@ -123,13 +145,17 @@ class _PointsMallPage extends State<PointsMallPage>
"pageSize": 10,
"state": 1
};
BaseData baseData = await client.creditGoods(param);
BaseData baseData = await client.creditGoods(param).catchError((onError) {
_refreshController.loadFailed();
_refreshController.refreshFailed();
});
SmartDialog.dismiss();
if (baseData != null && baseData.isSuccess) {
page = PageInfo.fromJson(baseData.data);
if (pageNum == 1) {
gooods.clear();
goods.clear();
}
gooods.addAll(page.list.map((e) => Goods.fromJson(e)));
goods.addAll(page.list.map((e) => Goods.fromJson(e)));
setState(() {
_refreshController.refreshCompleted();
_refreshController.loadComplete();
@ -145,10 +171,11 @@ class _PointsMallPage extends State<PointsMallPage>
}
}
int categoryId;
String categoryId;
_refresh() {
pageNum = 1;
SmartDialog.showLoading(msg: S.current.zhengzaijiazai);
creditGoods(categoryId);
queryUser();
}
@ -174,6 +201,7 @@ class _PointsMallPage extends State<PointsMallPage>
controller: _refreshController,
onRefresh: _refresh,
onLoading: () {
SmartDialog.showLoading(msg: S.current.zhengzaijiazai);
creditGoods(categoryId);
},
child: SingleChildScrollView(
@ -194,7 +222,8 @@ class _PointsMallPage extends State<PointsMallPage>
Container(
alignment: Alignment.centerLeft,
child: DefaultTabController(
length: 4,
length: gooodsCategorys == null
? 0 : gooodsCategorys.length,
child: TabBar(
isScrollable: true,
//
@ -211,14 +240,13 @@ class _PointsMallPage extends State<PointsMallPage>
unselectedLabelColor: Color(0xff4D4D4D),
indicatorSize: TabBarIndicatorSize.label,
//
tabs: <Widget>[
Tab(text: S.current.quanbu),
Tab(text: S.current.yinshi),
Tab(text: S.current.shenghuoyule),
Tab(text: S.current.bangong),
],
tabs: gooodsCategorys == null
? []
: gooodsCategorys
.map((e) => Tab(text: e.name))
.toList(),
onTap: (index) {
categoryId = index == 0 ? null : index;
categoryId = gooodsCategorys[index].id;
pageNum = 1;
creditGoods(categoryId);
},
@ -226,7 +254,7 @@ class _PointsMallPage extends State<PointsMallPage>
),
),
GridView.builder(
itemCount: gooods.length,
itemCount: goods == null ? 0 : goods.length,
padding: EdgeInsets.only(
left: 16.w, right: 16.w, top: 16.h, bottom: 16.h),
shrinkWrap: true,
@ -247,7 +275,7 @@ class _PointsMallPage extends State<PointsMallPage>
onTap: () {
_toDetails(index);
},
child: buildItem(gooods[index]),
child: buildItem(goods[index]),
);
})
],
@ -259,7 +287,7 @@ class _PointsMallPage extends State<PointsMallPage>
_toDetails(index) async {
await Navigator.of(context).pushNamed('/router/integral_store_page',
arguments: {"goodsId": gooods[index].id});
arguments: {"goodsId": goods[index].id});
SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
String token = sharedPreferences.getString("token");
if (token != null) queryUser();
@ -289,6 +317,7 @@ class _PointsMallPage extends State<PointsMallPage>
orderDesc = false;
break;
}
SmartDialog.showLoading(msg: S.current.zhengzaijiazai);
creditGoods(categoryId);
setState(() {
_itemText = item;
@ -547,7 +576,7 @@ class _PointsMallPage extends State<PointsMallPage>
bannerClick(bannerData[position]);
},
child: Container(
margin: EdgeInsets.only(bottom: 40),
margin: EdgeInsets.only(bottom: 40.h),
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(8))),
child: MImage(

15
lib/l10n/intl_en.arb

@ -393,8 +393,23 @@
"jifenbuzu": "您的积分不足",
"haowu": "好物",
"huixiangtoutiao": "回乡头条",
"shangyidengji": "上一等级",
"bodadianhua": "拨打电话",
"genghuantouxiang": "更换头像",
"paizhao": "拍照",
"xiangce": "相册",
"xianxiashiyong": "线下使用",
"duihuanquan": "兑换券",
"quhexiao": "去核销",
"biaojiweiyidu": "标为已读",
"xitongtongzhi": "系统通知",
"dingdanxiaoxi": "订单消息",
"chongzhixiaoxi": "充值消息",
"shuaxin": "刷新",
"lijichongzhi": "立即充值",
"nihaimeiyouchongzhihuoxiaofeijilu": "你在这儿还没有消费或充值记录哦~",
"haimeiyouxiaoxi": "还没有消息~",

14
lib/l10n/intl_zh_CN.arb

@ -394,8 +394,22 @@
"jifenbuzu": "您的积分不足",
"haowu": "好物",
"huixiangtoutiao": "回乡头条",
"shangyidengji": "上一等级",
"bodadianhua": "拨打电话",
"genghuantouxiang": "更换头像",
"paizhao": "拍照",
"xiangce": "相册",
"xianxiashiyong": "线下使用",
"duihuanquan": "兑换券",
"quhexiao": "去核销",
"biaojiweiyidu": "标为已读",
"xitongtongzhi": "系统通知",
"dingdanxiaoxi": "订单消息",
"chongzhixiaoxi": "充值消息",
"shuaxin": "刷新",
"lijichongzhi": "立即充值",
"nihaimeiyouchongzhihuoxiaofeijilu": "你在这儿还没有消费或充值记录哦~",
"haimeiyouxiaoxi": "还没有消息~",

14
lib/l10n/intl_zh_Hans_CN.arb

@ -394,8 +394,22 @@
"jifenbuzu": "您的积分不足",
"haowu": "好物",
"huixiangtoutiao": "回乡头条",
"shangyidengji": "上一等级",
"bodadianhua": "拨打电话",
"genghuantouxiang": "更换头像",
"paizhao": "拍照",
"xiangce": "相册",
"xianxiashiyong": "线下使用",
"duihuanquan": "兑换券",
"quhexiao": "去核销",
"biaojiweiyidu": "标为已读",
"xitongtongzhi": "系统通知",
"dingdanxiaoxi": "订单消息",
"chongzhixiaoxi": "充值消息",
"shuaxin": "刷新",
"lijichongzhi": "立即充值",
"nihaimeiyouchongzhihuoxiaofeijilu": "你在这儿还没有消费或充值记录哦~",
"haimeiyouxiaoxi": "还没有消息~",

16
lib/l10n/intl_zh_Hant_CN.arb

@ -386,8 +386,24 @@
"jifenbuzu": "您的積分不足",
"haowu": "好物",
"huixiangtoutiao": "回鄉頭條",
"shangyidengji": "上一等級",
"bodadianhua": "撥打電話",
"genghuantouxiang": "更换头像",
"paizhao": "拍照",
"xiangce": "相冊",
"xianxiashiyong": "線下使用",
"duihuanquan": "兌換券",
"quhexiao": "去核銷",
"biaojiweiyidu": "標為已讀",
"xitongtongzhi": "系統通知",
"dingdanxiaoxi": "订单消息",
"chongzhixiaoxi": "充值消息",
"dingdanxiaoxi": "訂單消息",
"chongzhixiaoxi": "充值消息",
"shuaxin": "刷新",
"lijichongzhi": "立即充值",
"nihaimeiyouchongzhihuoxiaofeijilu": "你在這兒還沒有消費或充值紀錄喔~",
"haimeiyouxiaoxi": "還沒有消息~",

14
lib/l10n/intl_zh_TW.arb

@ -386,8 +386,22 @@
"jifenbuzu": "您的積分不足",
"haowu": "好物",
"huixiangtoutiao": "回鄉頭條",
"shangyidengji": "上一等級",
"bodadianhua": "撥打電話",
"genghuantouxiang": "更換頭像",
"paizhao": "拍照",
"xiangce": "相冊",
"xianxiashiyong": "線下使用",
"duihuanquan": "兌換券",
"quhexiao": "去核銷",
"biaojiweiyidu": "標為已讀",
"xitongtongzhi": "系統通知",
"dingdanxiaoxi": "訂單消息",
"chongzhixiaoxi": "充值消息",
"shuaxin": "刷新",
"lijichongzhi": "立即充值",
"nihaimeiyouchongzhihuoxiaofeijilu": "你在這兒還沒有消費或充值紀錄喔~",
"haimeiyouxiaoxi": "還沒有消息~",

4
lib/main.dart

@ -196,7 +196,7 @@ Map<String, WidgetBuilder> routers = <String, WidgetBuilder>{
'/router/mine_card_invalid': (context, {arguments}) => MineCardInvalidPage(),
'/router/vip_card_page': (context, {arguments}) => VipCardPage(),
'/router/vip_details_page': (context, {arguments}) => VipDetailPage(arguments: arguments),
'/router/vip_balance': (context, {arguments}) => VipBalancePage(),
'/router/vip_balance': (context, {arguments}) => VipBalancePage(arguments:arguments),
'/router/coupons_page': (context, {arguments}) => CouponsPage(),
'/router/permission_setting': (context, {arguments}) =>
PermissionSettingPage(),
@ -225,7 +225,7 @@ Map<String, WidgetBuilder> routers = <String, WidgetBuilder>{
'/router/mine_vip_level_page': (context, {arguments}) => MineVipLevelPage(arguments:arguments),
'/router/exchange_history_page': (context, {arguments}) =>
ExchangeHistoryPage(),
'/router/write_off_page': (context, {arguments}) => WriteOffPage(),
'/router/write_off_page': (context, {arguments}) => WriteOffPage(arguments:arguments),
'/router/write_off_success_page': (context, {arguments}) =>
WriteOffSuccessPage(),
'/router/order_history_page': (context, {arguments}) => OrderHistoryPage(),

213
lib/message/main_message_page.dart

@ -1,8 +1,8 @@
import 'package:flutter/material.dart';
import 'package:huixiang/generated/l10n.dart';
import 'package:huixiang/message/mine_message.dart';
import 'package:huixiang/message/real_time_info_page.dart';
import 'package:huixiang/view_widget/my_tab.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:huixiang/utils/font_weight.dart';
import 'package:huixiang/view_widget/round_button.dart';
class MainMessagePage extends StatefulWidget {
@ -26,114 +26,123 @@ class _MainMessagePage extends State<MainMessagePage>
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Color(0xFFFFFFFF),
appBar: AppBar(
backgroundColor: Color(0xFFFFFFFF),
elevation: 0,
centerTitle: false,
leading: GestureDetector(
onTap: () {
Navigator.of(context).pop();
},
child: Container(
alignment: Alignment.centerRight,
margin: EdgeInsets.only(left: 10),
padding: EdgeInsets.all(6),
child: Icon(
Icons.arrow_back_ios,
color: Colors.black,
size: 24,
appBar: AppBar(
backgroundColor: Color(0xFFFFFFFF),
elevation: 0,
centerTitle: false,
leading: GestureDetector(
onTap: () {
Navigator.of(context).pop();
},
child: Container(
alignment: Alignment.centerRight,
margin: EdgeInsets.only(left: 10),
padding: EdgeInsets.all(6),
child: Icon(
Icons.arrow_back_ios,
color: Colors.black,
size: 24,
),
),
),
titleSpacing: 2,
leadingWidth: 56,
automaticallyImplyLeading: true,
actions: [rightAction()],
title: Text(
S.of(context).xiaoxi,
style: TextStyle(color: Colors.black),
),
// bottom: PreferredSize(
// preferredSize: Size(double.infinity, 38),
// child: TabBar(
// controller: tabcontroller,
// isScrollable: true,
// indicatorWeight: 2,
// indicatorColor: Color(0xFF39B54A),
// labelPadding: EdgeInsets.only(left: 25, right: 25),
// indicatorPadding: EdgeInsets.only(left: 25, right: 25, top: 3),
// unselectedLabelStyle:
// TextStyle(fontSize: 16, fontWeight: FontWeight.normal),
// labelStyle: TextStyle(
// color: Colors.black,
// fontSize: 16,
// fontWeight: FontWeight.bold),
// labelColor: Colors.black,
// tabs: [
// MyTab(text: S.of(context).huodongzixun),
// MyTab(
// text: S.of(context).wodexiaoxi,
// ),
// ]),
// ),
),
titleSpacing: 2,
leadingWidth: 56,
automaticallyImplyLeading: true,
actions: [rightAction()],
title: Text(
S.of(context).xiaoxi,
style: TextStyle(color: Colors.black),
),
bottom: PreferredSize(
preferredSize: Size(double.infinity, 38),
child: TabBar(
controller: tabcontroller,
isScrollable: true,
indicatorWeight: 2,
indicatorColor: Color(0xFF39B54A),
labelPadding: EdgeInsets.only(left: 25, right: 25),
indicatorPadding: EdgeInsets.only(left: 25, right: 25, top: 3),
unselectedLabelStyle:
TextStyle(fontSize: 16, fontWeight: FontWeight.normal),
labelStyle: TextStyle(
color: Colors.black,
fontSize: 16,
fontWeight: FontWeight.bold),
labelColor: Colors.black,
tabs: [
MyTab(text: S.of(context).huodongzixun),
MyTab(
text: S.of(context).wodexiaoxi,
),
]),
),
),
body: TabBarView(
children: [
RealTimeInfoPage(),
MineMessagePage(_status, (status) {
setState(() {
_bgStatus = status;
});
})
],
controller: tabcontroller,
),
);
body: MineMessagePage(_status),
// TabBarView(
// children: [
// RealTimeInfoPage(),
// MineMessagePage(_status, (status) {
// setState(() {
// _bgStatus = status;
// });
// })
// ],
// controller: tabcontroller,
// ),
);
}
var _status = 0;
var _bgStatus = false;
Widget rightAction() {
if (_status == 0) {
return Container(
margin: EdgeInsets.only(right: 17),
child: GestureDetector(
onTap: () {
setState(() {
_status = (_status + 1) % 2;
});
},
child: Image.asset(
"assets/image/icon_delete.png",
width: 24,
height: 24,
),
),
);
} else {
return GestureDetector(
onTap: () {
setState(() {
_status = (_status + 1) % 2;
});
},
child: Container(
margin: EdgeInsets.only(right: 17),
padding: EdgeInsets.only(top: 15, bottom: 15),
alignment: Alignment.center,
child: RoundButton(
text: S.of(context).wancheng,
textColor: _bgStatus ? Colors.white : Color(0xFFA0A0A0),
backgroup: _bgStatus ? Color(0xFF32A060) : Color(0xFFD8D8D8),
fontSize: 14,
fontWeight: FontWeight.bold,
padding: EdgeInsets.only(left: 12, right: 12, top: 2, bottom: 2),
radius: 12,
),
),
);
}
return Text(
S.of(context).biaojiweiyidu,
style: TextStyle(
fontSize: 16.sp,
fontWeight: MyFontWeight.semi_bold,
color: Color(0xFF353535),
),
);
// if (_status == 0) {
// return Container(
// margin: EdgeInsets.only(right: 17),
// child: GestureDetector(
// onTap: () {
// setState(() {
// _status = (_status + 1) % 2;
// });
// },
// child: Image.asset(
// "assets/image/icon_delete.png",
// width: 24,
// height: 24,
// ),
// ),
// );
// } else {
// return GestureDetector(
// onTap: () {
// setState(() {
// _status = (_status + 1) % 2;
// });
// },
// child: Container(
// margin: EdgeInsets.only(right: 17),
// padding: EdgeInsets.only(top: 15, bottom: 15),
// alignment: Alignment.center,
// child: RoundButton(
// text: S.of(context).wancheng,
// textColor: _bgStatus ? Colors.white : Color(0xFFA0A0A0),
// backgroup: _bgStatus ? Color(0xFF32A060) : Color(0xFFD8D8D8),
// fontSize: 14,
// fontWeight: FontWeight.bold,
// padding: EdgeInsets.only(left: 12, right: 12, top: 2, bottom: 2),
// radius: 12,
// ),
// ),
// );
// }
}
}

53
lib/message/mine_message.dart

@ -2,63 +2,55 @@ import 'dart:collection';
import 'package:flutter/material.dart';
import 'package:huixiang/view_widget/message_item.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
class MineMessagePage extends StatefulWidget {
final int status;
final Function(bool) onChanged;
MineMessagePage(this.status, this.onChanged);
MineMessagePage(this.status);
@override
State<StatefulWidget> createState() {
return _MineMessagePage();
}
}
class _MineMessagePage extends State<MineMessagePage> {
Map<int, bool> map;
@override
void initState() {
super.initState();
map = HashMap();
}
@override
Widget build(BuildContext context) {
return SingleChildScrollView(
physics: BouncingScrollPhysics(),
child: Container(
margin: EdgeInsets.only(
left: 16,
right: 16,
top: 32,
left: 16.w,
right: 16.w,
top: 22.h,
),
padding: EdgeInsets.only(top: 16, bottom: 16),
padding: EdgeInsets.only(top: 16.h, bottom: 16.h),
decoration: BoxDecoration(
color: Colors.white,
boxShadow: [
BoxShadow(
color: Colors.black.withAlpha(12),
offset: Offset(0, 3),
blurRadius: 14,
spreadRadius: 0)
color: Colors.black.withAlpha(12),
offset: Offset(0, 3),
blurRadius: 14,
spreadRadius: 0,
)
],
borderRadius: BorderRadius.all(Radius.circular(8))),
borderRadius: BorderRadius.circular(8.w)),
child: ListView.builder(
itemCount: 12,
itemCount: 1,
shrinkWrap: true,
physics: new NeverScrollableScrollPhysics(),
itemBuilder: (context, position) {
return Container(
margin: EdgeInsets.only(top: 12, bottom: 12),
margin: EdgeInsets.only(top: 12.h, bottom: 12.h),
child: GestureDetector(
onTap: () {
Navigator.of(context).pushNamed('/router/system_msg_page');
},
child: MessageItem(widget.status, (check) {
map[position] = check;
refreshStatus();
}),
child: MessageItem(widget.status),
),
);
}),
@ -66,15 +58,4 @@ class _MineMessagePage extends State<MineMessagePage> {
);
}
refreshStatus() {
var isOneCheck = false;
map.forEach((key, value) {
if (value) {
isOneCheck = true;
}
});
if (widget.onChanged != null) {
widget.onChanged.call(isOneCheck);
}
}
}

2
lib/message/real_time_info_page.dart

@ -29,7 +29,7 @@ class _RealTimeInfoPage extends State<RealTimeInfoPage> {
spreadRadius: 0)
],
borderRadius: BorderRadius.all(Radius.circular(8))),
child: MessageItem(0, null),
child: MessageItem(0),
);
}),
);

280
lib/message/system_message.dart

@ -1,5 +1,18 @@
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:huixiang/generated/l10n.dart';
import 'package:huixiang/retrofit/data/base_data.dart';
import 'package:huixiang/retrofit/data/message.dart';
import 'package:huixiang/retrofit/data/page.dart';
import 'package:huixiang/retrofit/retrofit_api.dart';
import 'package:huixiang/utils/font_weight.dart';
import 'package:huixiang/view_widget/classic_header.dart';
import 'package:huixiang/view_widget/my_appbar.dart';
import 'package:huixiang/view_widget/my_footer.dart';
import 'package:huixiang/view_widget/no_data_view.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
class SystemMessagePage extends StatefulWidget {
@override
@ -9,65 +22,129 @@ class SystemMessagePage extends StatefulWidget {
}
class _SystemMessagePage extends State<SystemMessagePage> {
ApiService apiService;
@override
void initState() {
super.initState();
SharedPreferences.getInstance().then((value) {
apiService =
ApiService(Dio(), token: value.getString("token"), context: context);
queryMessage();
});
}
int pageNum = 1;
List<Message> messages = [];
_refresh() {
pageNum = 1;
queryMessage();
}
queryMessage() async {
BaseData baseData = await apiService.msgList({
"pageNum": pageNum,
"pageSize": 10,
"searchKey": "",
"state": "",
"typed": ""
}).catchError((onError) {
_refreshController.loadFailed();
_refreshController.refreshFailed();
});
if (baseData != null && baseData.isSuccess) {
PageInfo pageInfo = PageInfo.fromJson(baseData.data);
if (pageNum == 1) {
messages.clear();
}
messages.addAll(pageInfo.list.map((e) => Message.fromJson(e)).toList());
_refreshController.loadComplete();
_refreshController.refreshCompleted();
if (mounted) setState(() {});
if (pageNum * 10 > int.tryParse(pageInfo.total)) {
_refreshController.loadNoData();
} else {
pageNum += 1;
}
} else {
_refreshController.loadFailed();
_refreshController.refreshFailed();
}
}
RefreshController _refreshController = RefreshController();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(
S.of(context).xitongxiaoxi,
style: TextStyle(color: Colors.black),
),
centerTitle: false,
backgroundColor: Color(0xFFF7F7F7),
elevation: 0,
leading: GestureDetector(
onTap: () {
Navigator.of(context).pop();
appBar: MyAppBar(
background: Color(0xFFF7F7F7),
leadingColor: Colors.black,
title: S.of(context).xitongxiaoxi,
titleSize: 18.sp,
titleColor: Colors.black,
),
body: SmartRefresher(
enablePullDown: true,
enablePullUp: true,
header: MyHeader(),
physics: BouncingScrollPhysics(),
footer: CustomFooter(
loadStyle: LoadStyle.ShowWhenLoading,
builder: (BuildContext context, LoadStatus mode) {
return MyFooter(mode);
},
child: Container(
alignment: Alignment.centerRight,
margin: EdgeInsets.only(left: 10),
padding: EdgeInsets.all(6),
child: Icon(
Icons.arrow_back_ios,
color: Colors.black,
size: 24,
),
),
),
titleSpacing: 2,
leadingWidth: 56,
),
body: Container(
margin: EdgeInsets.only(top: 16),
child: ListView.builder(
itemCount: 3,
itemBuilder: (context, position) {
return GestureDetector(
onTap: () {
Navigator.of(context).pushNamed('/router/exchange_order_details');
},
child: buildMessageItem(),
);
}),
controller: _refreshController,
onRefresh: _refresh,
onLoading: () {
queryMessage();
},
child: (messages == null || messages.length == 0)
? NoDataView(
isShowBtn: false,
text: S.of(context).haimeiyouxiaoxi,
fontSize: 16.sp,
margin: EdgeInsets.only(top: 120.h),
)
: ListView.builder(
padding: EdgeInsets.only(top: 16),
itemCount: messages.length,
physics: NeverScrollableScrollPhysics(),
itemBuilder: (context, position) {
return GestureDetector(
onTap: () {
if (messages[position].typed == 2) {
Navigator.of(context)
.pushNamed('/router/exchange_order_details');
}
},
child: buildMessageItem(messages[position]),
);
}),
),
);
}
Widget buildMessageItem() {
Widget buildMessageItem(Message message) {
return Container(
margin: EdgeInsets.only(left: 16, right: 16, top: 8, bottom: 8),
padding: EdgeInsets.all(20),
margin: EdgeInsets.only(left: 16.w, right: 16.w, top: 8.h, bottom: 8.h),
padding: EdgeInsets.all(20.w),
decoration: BoxDecoration(
color: Colors.white,
boxShadow: [
BoxShadow(
color: Colors.black.withAlpha(12),
offset: Offset(0, 3),
blurRadius: 14,
spreadRadius: 0)
],
borderRadius: BorderRadius.all(Radius.circular(8))),
color: Colors.white,
boxShadow: [
BoxShadow(
color: Colors.black.withAlpha(12),
offset: Offset(0, 3),
blurRadius: 14,
spreadRadius: 0,
)
],
borderRadius: BorderRadius.circular(8),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
@ -79,55 +156,96 @@ class _SystemMessagePage extends State<SystemMessagePage> {
Row(
children: [
Image.asset(
"assets/image/icon_system_notices.png",
width: 24,
height: 24,
(message.typed == 1)
? "assets/image/icon_system_notices.png"
: (message.typed == 2)
? "assets/image/icon_system_order.png"
: "assets/image/icon_system_recharge.png",
width: 24.w,
height: 24.h,
),
SizedBox(
width: 4,
width: 4.w,
),
Text(
S.of(context).xitongtongzhi,
(message.typed == 1)
? S.of(context).xitongtongzhi
: (message.typed == 2)
? S.of(context).dingdanxiaoxi
: S.of(context).chongzhixiaoxi,
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.bold,
color: Color(0xFF060606)),
fontSize: 14.sp,
fontWeight: FontWeight.bold,
color: Color(0xFF060606),
),
)
],
),
Text(
"2021.03.08 13:22",
style: TextStyle(fontSize: 10, color: Color(0xFFA29E9E)),
message.updateTime,
style: TextStyle(
fontSize: 10.sp,
color: Color(0xFFA29E9E),
),
),
],
),
Container(
margin: EdgeInsets.only(left: 28, top: 12),
child: Text(
S.of(context).ninyouyigexindedingdan,
style: TextStyle(fontSize: 10, color: Color(0xFF353535)),
if (message.typed != 3)
Container(
margin: EdgeInsets.only(left: 28.w, top: 12.h),
child: Text(
S.of(context).ninyouyigexindedingdan,
style: TextStyle(
fontSize: 10.sp,
color: Color(0xFF353535),
),
),
)
else
Container(
margin: EdgeInsets.only(left: 28.w, top: 18.h),
child: Text(
message.title,
style: TextStyle(
fontSize: 20.sp,
fontWeight: MyFontWeight.semi_bold,
color: Color(0xFF353535),
),
),
),
),
Container(
margin: EdgeInsets.only(left: 28, top: 22),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
S.of(context).chakangengduo,
style: TextStyle(
fontSize: 12,
if (message.typed != 3)
Container(
margin: EdgeInsets.only(left: 28.w, top: 22.h),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
S.of(context).chakangengduo,
style: TextStyle(
fontSize: 12.sp,
fontWeight: FontWeight.bold,
color: Color(0xFF353535)),
color: Color(0xFF353535),
),
),
Icon(
Icons.keyboard_arrow_right,
color: Colors.black,
)
],
),
)
else
Container(
margin: EdgeInsets.only(left: 28.w, top: 22.h),
child: Text(
message.content,
style: TextStyle(
fontSize: 10.sp,
color: Color(0xFF353535),
),
Icon(
Icons.keyboard_arrow_right,
color: Colors.black,
)
],
),
),
)
],
),
);

10
lib/mine/coupons_page.dart

@ -1,6 +1,7 @@
import 'package:dio/dio.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:huixiang/generated/l10n.dart';
import 'package:huixiang/retrofit/data/base_data.dart';
import 'package:huixiang/retrofit/data/coupon.dart';
@ -169,8 +170,13 @@ class _CouponsPage extends State<CouponsPage> {
if (type == 1) {
receiveCoupon(coupons[position].id);
} else {
//Navigator.of(context).pushNamed('/router/mine_card')
showStoreSelector(coupons[position].storeList);
if (coupons[position].bizType == 5) {
Navigator.of(context).pushNamed('/router/write_off_page',arguments: {
"couponId":coupons[position].id
});
} else {
showStoreSelector(coupons[position].storeList);
}
}
}, () {
setState(() {

55
lib/mine/mine_wallet_page.dart

@ -8,6 +8,7 @@ import 'package:huixiang/retrofit/data/page.dart';
import 'package:huixiang/retrofit/data/user_bill.dart';
import 'package:huixiang/retrofit/data/user_info.dart';
import 'package:huixiang/retrofit/retrofit_api.dart';
import 'package:huixiang/utils/font_weight.dart';
import 'package:huixiang/view_widget/classic_header.dart';
import 'package:huixiang/view_widget/my_footer.dart';
import 'package:huixiang/view_widget/round_button.dart';
@ -168,7 +169,7 @@ class _MineWalletPage extends State<MineWalletPage> {
borderRadius: BorderRadius.all(Radius.circular(8)),
boxShadow: [
BoxShadow(
color: Colors.black.withAlpha(12),
color: Colors.black.withAlpha(25),
offset: Offset(0, 3),
blurRadius: 14,
spreadRadius: 0,
@ -189,25 +190,25 @@ class _MineWalletPage extends State<MineWalletPage> {
SizedBox(
height: 16.h,
),
Row(
children: [
Container(
width: 3.w,
height: 15.h,
color: Color(0xFF20662A),
),
SizedBox(
width: 3.w,
),
Text(
"07/2021",
style: TextStyle(
color: Color(0xFF353535),
fontSize: 14.sp,
),
),
],
),
// Row(
// children: [
// Container(
// width: 3,
// height: 15,
// color: Color(0xFF20662A),
// ),
// SizedBox(
// width: 3,
// ),
// Text(
// "09/2021",
// style: TextStyle(
// color: Color(0xFF353535),
// fontSize: 14,
// ),
// ),
// ],
// ),
Container(
margin: EdgeInsets.only(top: 14.h),
child: ListView.builder(
@ -305,7 +306,7 @@ class _MineWalletPage extends State<MineWalletPage> {
borderRadius: BorderRadius.all(Radius.circular(8)),
boxShadow: [
BoxShadow(
color: Colors.black.withAlpha(12),
color: Colors.black.withAlpha(25),
offset: Offset(0, 3),
blurRadius: 14,
spreadRadius: 0,
@ -322,7 +323,7 @@ class _MineWalletPage extends State<MineWalletPage> {
child: Text(
S.of(context).zhanghuyue,
style: TextStyle(
fontWeight: FontWeight.bold,
fontWeight: MyFontWeight.medium,
color: Color(0xFF353535),
fontSize: 16.sp,
),
@ -358,7 +359,7 @@ class _MineWalletPage extends State<MineWalletPage> {
Text(
"$mBalance",
style: TextStyle(
fontWeight: FontWeight.w500,
fontWeight: MyFontWeight.medium,
color: Color(0xFF353535),
fontSize: 50.sp,
),
@ -371,6 +372,7 @@ class _MineWalletPage extends State<MineWalletPage> {
style: TextStyle(
color: Color(0xFF20662A),
fontSize: 16.sp,
fontWeight: MyFontWeight.regular
),
),
SizedBox(
@ -381,15 +383,14 @@ class _MineWalletPage extends State<MineWalletPage> {
toRecharge();
},
child: RoundButton(
width: 103.w,
height: 30.h,
width: 104.w,
text: S.of(context).lijichongzhi,
textColor: Colors.white,
fontWeight: FontWeight.bold,
fontWeight: MyFontWeight.semi_bold,
radius: 15,
backgroup: Color(0xFF32A060),
fontSize: 14.sp,
padding: EdgeInsets.fromLTRB(24.w, 5.h, 24.w, 5.h),
padding: EdgeInsets.symmetric(vertical: 5.h),
),
),
],

4
lib/mine/recharge_page.dart

@ -79,16 +79,14 @@ class _RechargePage extends State<RechargePage> {
S.of(context).qingshuruchongzhijine,
hintText: "",
controller: controller,
inputType: 1,
padding: EdgeInsets.all(20),
heightPercentage: 0.16.sh,
errorText: S.of(context).chongzhizuixiaojine(10),
titleColor: Color(0xFF727272),
errorTextColor: Color(0xFF32A060),
radius: 8,
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 30.sp,
fontSize: 27.sp,
color: color,
),
inputLimit: 12,

10
lib/mine/roll_center_page.dart

@ -1,6 +1,7 @@
import 'package:dio/dio.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:huixiang/generated/l10n.dart';
import 'package:huixiang/retrofit/data/base_data.dart';
import 'package:huixiang/retrofit/data/coupon.dart';
@ -142,8 +143,13 @@ class _RollCenterPage extends State<RollCenterPage> {
if (type == 1) {
receiveCoupon(coupons[position].id);
} else {
//Navigator.of(context).pushNamed('/router/mine_card')
showStoreSelector(coupons[position].storeList);
if (coupons[position].bizType == 5) {
Navigator.of(context).pushNamed('/router/write_off_page',arguments: {
"couponId":coupons[position].id
});
} else {
showStoreSelector(coupons[position].storeList);
}
}
}, () {
setState(() {

8
lib/mine/user_info_page.dart

@ -254,10 +254,10 @@ class _UserInfoPage extends State<UserInfoPage> {
context: context,
builder: (contetx) {
return CupertinoActionSheet(
title: Text("更换头像"),
title: Text(S.of(context).genghuantouxiang),
actions: [
CupertinoActionSheetAction(
child: Text('拍照'),
child: Text(S.of(context).paizhao),
onPressed: () {
openCamera();
Navigator.of(context).pop();
@ -266,7 +266,7 @@ class _UserInfoPage extends State<UserInfoPage> {
isDestructiveAction: false,
),
CupertinoActionSheetAction(
child: Text('相册'),
child: Text(S.of(context).xiangce),
onPressed: () {
openStorage();
Navigator.of(context).pop();
@ -279,7 +279,7 @@ class _UserInfoPage extends State<UserInfoPage> {
onPressed: () {
Navigator.of(context).pop();
},
child: Text("取消"),
child: Text(S.of(context).quxiao),
isDestructiveAction: true,
),
);

138
lib/mine/vip_balance_page.dart

@ -3,13 +3,19 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:huixiang/generated/l10n.dart';
import 'package:huixiang/retrofit/data/base_data.dart';
import 'package:huixiang/retrofit/data/coupon.dart';
import 'package:huixiang/retrofit/data/page.dart';
import 'package:huixiang/retrofit/data/user_bill.dart';
import 'package:huixiang/retrofit/retrofit_api.dart';
import 'package:huixiang/view_widget/no_data_view.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
class VipBalancePage extends StatefulWidget {
final arguments;
VipBalancePage({this.arguments});
@override
State<StatefulWidget> createState() {
return _VipBalancePage();
@ -26,45 +32,46 @@ class _VipBalancePage extends State<VipBalancePage> {
super.initState();
SharedPreferences.getInstance().then((value) => {
apiService = ApiService(Dio(), context: context, token: value.getString('token')),
queryCard(),
});
apiService = ApiService(Dio(),
context: context, token: value.getString('token')),
queryBillInfo(),
});
_refreshController = RefreshController(initialRefresh: false);
}
int pageNum = 1;
List<Coupon> coupons = [];
// void _onRefresh() async {
// pageNum = 1;
// queryCard();
// }
int current = 1;
List<UserBill> userBills = [];
queryCard() async {
BaseData baseData = await apiService.queryCard({
"centre": true,
"pageNum": pageNum,
"pageSize": 10,
"searchKey": "",
"state": 3
queryBillInfo() async {
BaseData baseData = await apiService.queryBillInfo({
"current": current,
"model": {
"category": "",
"mid": widget.arguments["storeId"],
"title": "bill_tenant_balance",
"type": ""
},
"order": "descending",
"size": 10,
"sort": "id"
}).catchError((error) {
_refreshController.loadFailed();
_refreshController.refreshFailed();
});
if (baseData != null && baseData.isSuccess) {
PageInfo pageInfo = PageInfo.fromJson(baseData.data);
if (pageNum == 1) {
coupons.clear();
if (current == 1) {
userBills.clear();
}
coupons.addAll(pageInfo.list.map((e) => Coupon.fromJson(e)));
userBills.addAll(pageInfo.records.map((e) => UserBill.fromJson(e)));
setState(() {
_refreshController.refreshCompleted();
_refreshController.loadComplete();
if (pageInfo.pageNum == pageInfo.pages) {
_refreshController.loadNoData();
} else {
pageNum += 1;
current += 1;
}
});
} else {
@ -93,7 +100,7 @@ class _VipBalancePage extends State<VipBalancePage> {
},
child: Container(
alignment: Alignment.centerRight,
margin: EdgeInsets.only(left: 10),
margin: EdgeInsets.only(left: 10.w),
padding: EdgeInsets.all(6),
child: Icon(
Icons.arrow_back_ios,
@ -103,49 +110,56 @@ class _VipBalancePage extends State<VipBalancePage> {
),
),
titleSpacing: 2,
leadingWidth: 56,
leadingWidth: 56.w,
),
body: Container(
child: ListView.builder(
itemBuilder: (context, position) {
return balanceItem();
},
itemCount: coupons.length,
),
child: (userBills == null || userBills.length == 0)
? NoDataView(
isShowBtn: false,
text: S.of(context).nihaimeiyouchongzhihuoxiaofeijilu,
fontSize: 16.sp,
margin: EdgeInsets.only(top: 120.h),
)
: ListView.builder(
itemBuilder: (context, position) {
return balanceItem(userBills[position]);
},
itemCount: userBills.length,
),
),
);
}
Widget balanceItem(){
Widget balanceItem(UserBill userBill) {
return Container(
margin: EdgeInsets.only(left: 16,right: 16),
margin: EdgeInsets.only(left: 16.w, right: 16.w),
child: Column(
// mainAxisAlignment: MainAxisAlignment.spaceAround,
// crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
width: 19,
height: 19,
margin: EdgeInsets.only(left: 12, top: 12),
width: 19.w,
height: 19.h,
margin: EdgeInsets.only(left: 12.w, top: 12.h),
alignment: Alignment.center,
child: Image.asset(
"assets/image/icon_store_c.png",
),
userBill.pm == 0
? "assets/image/icon_store_c.png"
: "assets/image/icon_wallet_recharge.png",
),
),
Expanded(
child: Container(
width: double.infinity,
margin: EdgeInsets.only(left: 6, top: 12),
margin: EdgeInsets.only(left: 6.w, top: 12.h),
alignment: Alignment.centerLeft,
child: Text(
"门店消费",
userBill.name,
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 16,
fontSize: 16.sp,
color: Color(0xFF353535),
),
),
@ -153,41 +167,49 @@ class _VipBalancePage extends State<VipBalancePage> {
flex: 1,
),
Padding(
padding: EdgeInsets.only(top: 12),
child: Text("-200",
style: TextStyle(
fontSize: 16,
color: Color(0xffF68034))),
padding: EdgeInsets.only(top: 12.h),
child: Text("${userBill.pm == 0 ? "-" : "+"}${userBill.number}",
style: TextStyle(fontSize: 16, color: Color(0xffF68034))),
),
],
),
SizedBox(height: 8,),
SizedBox(
height: 8.h,
),
Container(
margin: EdgeInsets.only(left: 35),
child:Row(
margin: EdgeInsets.only(left: 35.w),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text.rich(
TextSpan(children: [
TextSpan(
text: "2021-06-19 13:03",
style: TextStyle(fontSize: 14, color: Color(0xff727272)),
text: userBill.createTime,
style: TextStyle(
fontSize: 14.sp,
color: Color(0xff727272),
),
),
]),
),
Text.rich(
TextSpan(children: [
TextSpan(
text: "余额:200.00",
style: TextStyle(fontSize: 14,fontWeight: FontWeight.bold, color: Color(0xff727272)),
text: S.of(context).yue_(userBill.balance),
style: TextStyle(
fontSize: 14.sp,
fontWeight: FontWeight.bold,
color: Color(0xff727272),
),
),
]),
),
],
),),
),
),
Container(
margin: EdgeInsets.only(left: 35,top: 12,bottom: 12),
margin: EdgeInsets.only(left: 35.w, top: 12.h, bottom: 12.h),
height: 1,
color: Color(0xFFF1F1F1),
),

4
lib/mine/vip_detail_page.dart

@ -296,7 +296,7 @@ class _VipDetailPage extends State<VipDetailPage> {
GestureDetector(
onTap: () {
Navigator.of(context)
.pushNamed('/router/vip_balance');
.pushNamed('/router/vip_balance', arguments: {"storeId":vipCard.id});
},
child: Row(
children: [
@ -501,7 +501,7 @@ class _VipDetailPage extends State<VipDetailPage> {
SizedBox(
height: 8.h,
),
Column(
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
crossAxisAlignment: CrossAxisAlignment.start,
children: goodsItem(

2
lib/order/exchange_history_page.dart

@ -298,7 +298,7 @@ class _ExchangeHistoryList extends State<ExchangeHistoryList> {
),
Expanded(
child: Text(
"武昌区凯德1818蓝调步行街(蔡明纬店旁)",
exchangeOrder.address ?? "",
style: TextStyle(
color: Colors.black,
fontSize: 12.sp,

5
lib/order/write_off_page.dart

@ -4,6 +4,11 @@ import 'package:huixiang/view_widget/round_button.dart';
import 'package:huixiang/view_widget/separator.dart';
class WriteOffPage extends StatefulWidget {
final arguments;
WriteOffPage({this.arguments});
@override
State<StatefulWidget> createState() {
return _WriteOffPage();

3
lib/retrofit/data/exchange_order.dart

@ -12,6 +12,7 @@ class ExchangeOrder {
String mid;
String orderCode;
String amount;
String address;
int state;
int useTyped;
int isDelete;
@ -27,6 +28,7 @@ class ExchangeOrder {
..mid = json['mid'] as String
..orderCode = json['orderCode'] as String
..amount = json['amount'] as String
..address = json['address'] as String
..state = json['state'] as int
..useTyped = json['useTyped'] as int
..isDelete = json['isDelete'] as int
@ -46,6 +48,7 @@ class ExchangeOrder {
'mid': this.mid,
'orderCode': this.orderCode,
'amount': this.amount,
'address': this.address,
'state': this.state,
'useTyped': this.useTyped,
'isDelete': this.isDelete,

86
lib/retrofit/data/goods_category.dart

@ -0,0 +1,86 @@
/// id : "1412705737469067264"
/// createTime : "2021-07-07 17:31:09"
/// createUser : "1"
/// updateTime : "2021-07-20 16:50:28"
/// updateUser : "1"
/// parentId : "0"
/// name : "饮食"
/// miniShow : 1
/// sortOrder : 1
/// isDelete : 0
class GoodsCategory {
String _id;
String _createTime;
String _createUser;
String _updateTime;
String _updateUser;
String _parentId;
String _name;
int _miniShow;
int _sortOrder;
int _isDelete;
String get id => _id;
String get createTime => _createTime;
String get createUser => _createUser;
String get updateTime => _updateTime;
String get updateUser => _updateUser;
String get parentId => _parentId;
String get name => _name;
int get miniShow => _miniShow;
int get sortOrder => _sortOrder;
int get isDelete => _isDelete;
GoodsCategory({
String id,
String createTime,
String createUser,
String updateTime,
String updateUser,
String parentId,
String name,
int miniShow,
int sortOrder,
int isDelete}){
_id = id;
_createTime = createTime;
_createUser = createUser;
_updateTime = updateTime;
_updateUser = updateUser;
_parentId = parentId;
_name = name;
_miniShow = miniShow;
_sortOrder = sortOrder;
_isDelete = isDelete;
}
GoodsCategory.fromJson(dynamic json) {
_id = json["id"];
_createTime = json["createTime"];
_createUser = json["createUser"];
_updateTime = json["updateTime"];
_updateUser = json["updateUser"];
_parentId = json["parentId"];
_name = json["name"];
_miniShow = json["miniShow"];
_sortOrder = json["sortOrder"];
_isDelete = json["isDelete"];
}
Map<String, dynamic> toJson() {
var map = <String, dynamic>{};
map["id"] = _id;
map["createTime"] = _createTime;
map["createUser"] = _createUser;
map["updateTime"] = _updateTime;
map["updateUser"] = _updateUser;
map["parentId"] = _parentId;
map["name"] = _name;
map["miniShow"] = _miniShow;
map["sortOrder"] = _sortOrder;
map["isDelete"] = _isDelete;
return map;
}
}

101
lib/retrofit/data/message.dart

@ -0,0 +1,101 @@
/// id : "1420215467561189376"
/// createTime : "2021-07-28 10:58:26"
/// createUser : "0"
/// updateTime : "2021-07-28 10:58:29"
/// updateUser : "0"
/// mid : "1406879717390286848"
/// title : "充值成功"
/// content : "你于2021-07-28 10:52:02充值0.01元,当前余额:0.08元。"
/// typed : 3
/// relational : ""
/// state : 1
/// isDelete : 0
class Message {
String _id;
String _createTime;
String _createUser;
String _updateTime;
String _updateUser;
String _mid;
String _title;
String _content;
int _typed;
String _relational;
int _state;
int _isDelete;
String get id => _id;
String get createTime => _createTime;
String get createUser => _createUser;
String get updateTime => _updateTime;
String get updateUser => _updateUser;
String get mid => _mid;
String get title => _title;
String get content => _content;
int get typed => _typed;
String get relational => _relational;
int get state => _state;
int get isDelete => _isDelete;
Message({
String id,
String createTime,
String createUser,
String updateTime,
String updateUser,
String mid,
String title,
String content,
int typed,
String relational,
int state,
int isDelete}){
_id = id;
_createTime = createTime;
_createUser = createUser;
_updateTime = updateTime;
_updateUser = updateUser;
_mid = mid;
_title = title;
_content = content;
_typed = typed;
_relational = relational;
_state = state;
_isDelete = isDelete;
}
Message.fromJson(dynamic json) {
_id = json["id"];
_createTime = json["createTime"];
_createUser = json["createUser"];
_updateTime = json["updateTime"];
_updateUser = json["updateUser"];
_mid = json["mid"];
_title = json["title"];
_content = json["content"];
_typed = json["typed"];
_relational = json["relational"];
_state = json["state"];
_isDelete = json["isDelete"];
}
Map<String, dynamic> toJson() {
var map = <String, dynamic>{};
map["id"] = _id;
map["createTime"] = _createTime;
map["createUser"] = _createUser;
map["updateTime"] = _updateTime;
map["updateUser"] = _updateUser;
map["mid"] = _mid;
map["title"] = _title;
map["content"] = _content;
map["typed"] = _typed;
map["relational"] = _relational;
map["state"] = _state;
map["isDelete"] = _isDelete;
return map;
}
}

13
lib/retrofit/retrofit_api.dart

@ -147,6 +147,10 @@ abstract class ApiService {
@POST("/creditGoods/list")
Future<BaseData> creditGoods(@Body() Map<String, dynamic> param);
///
@POST("/creditGoodsCategory/page")
Future<BaseData> goodsCategory(@Body() Map<String, dynamic> param);
///
@GET("/creditGoods/{id}")
Future<BaseData> creditGoodsById(@Path("id") String id);
@ -282,4 +286,13 @@ abstract class ApiService {
///
@GET("/member/vipDetail/{id}")
Future<BaseData> vipDetail(@Path("id") String id);
///App消息列表
@POST("/app-msg/list")
Future<BaseData> msgList(@Body() Map<String, dynamic> param);
///App消息详情
@GET("/app-msg/{id}")
Future<BaseData> queryMsg(@Path("id") String id);
}

763
lib/retrofit/retrofit_api.g.dart

@ -1,763 +0,0 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'retrofit_api.dart';
// **************************************************************************
// RetrofitGenerator
// **************************************************************************
class _ApiService implements ApiService {
_ApiService(this._dio, {this.baseUrl}) {
ArgumentError.checkNotNull(_dio, '_dio');
baseUrl ??= 'http://platform.test.api.lotus-wallet.com/app/';
}
final Dio _dio;
String baseUrl;
@override
Future<BaseData> upload(data, folderId) async {
ArgumentError.checkNotNull(data, 'data');
ArgumentError.checkNotNull(folderId, 'folderId');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = FormData();
_data.files.add(MapEntry(
'file',
MultipartFile.fromFileSync(data.path,
filename: data.path.split(Platform.pathSeparator).last)));
if (folderId != null) {
_data.fields.add(MapEntry('folderId', folderId.toString()));
}
final _result = await _dio.request<Map<String, dynamic>>('/file/upload',
queryParameters: queryParameters,
options: RequestOptions(
method: 'POST',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<dynamic> searchPoi(lat, lng, keywords, size, page) async {
ArgumentError.checkNotNull(lat, 'lat');
ArgumentError.checkNotNull(lng, 'lng');
ArgumentError.checkNotNull(keywords, 'keywords');
ArgumentError.checkNotNull(size, 'size');
ArgumentError.checkNotNull(page, 'page');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
final _result = await _dio.request(
'https://restapi.amap.com/v3/place/around?key=542b46afa8e4b88fe1eb3c4d0ba0872f&location=$lat,$lng&keywords=$keywords&offset={size}&page={page}&extensions=all',
queryParameters: queryParameters,
options: RequestOptions(
method: 'GET',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = _result.data;
return value;
}
@override
Future<BaseData> memberLogin(param) async {
ArgumentError.checkNotNull(param, 'param');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
_data.addAll(param ?? <String, dynamic>{});
final _result = await _dio.request<Map<String, dynamic>>(
'/auth/platform/memberLogin',
queryParameters: queryParameters,
options: RequestOptions(
method: 'POST',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> sendVerify(mobile) async {
ArgumentError.checkNotNull(mobile, 'mobile');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
final _result = await _dio.request<Map<String, dynamic>>(
'/auth/sendVerify/$mobile',
queryParameters: queryParameters,
options: RequestOptions(
method: 'GET',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> creditGoods(param) async {
ArgumentError.checkNotNull(param, 'param');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
_data.addAll(param ?? <String, dynamic>{});
final _result = await _dio.request<Map<String, dynamic>>(
'/creditGoods/list',
queryParameters: queryParameters,
options: RequestOptions(
method: 'POST',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> creditGoodsById(id) async {
ArgumentError.checkNotNull(id, 'id');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
final _result = await _dio.request<Map<String, dynamic>>('/creditGoods/$id',
queryParameters: queryParameters,
options: RequestOptions(
method: 'GET',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> queryInfo() async {
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
final _result = await _dio.request<Map<String, dynamic>>('/member/info',
queryParameters: queryParameters,
options: RequestOptions(
method: 'GET',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> editInfo(param) async {
ArgumentError.checkNotNull(param, 'param');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
_data.addAll(param ?? <String, dynamic>{});
final _result = await _dio.request<Map<String, dynamic>>(
'/member/editMemberInfo',
queryParameters: queryParameters,
options: RequestOptions(
method: 'POST',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> signInInfo() async {
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
final _result = await _dio.request<Map<String, dynamic>>(
'/member/signInInfo',
queryParameters: queryParameters,
options: RequestOptions(
method: 'GET',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> signIn() async {
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
final _result = await _dio.request<Map<String, dynamic>>('/member/signIn',
queryParameters: queryParameters,
options: RequestOptions(
method: 'GET',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> recharge(param) async {
ArgumentError.checkNotNull(param, 'param');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
_data.addAll(param ?? <String, dynamic>{});
final _result = await _dio.request<Map<String, dynamic>>('/wallet/recharge',
queryParameters: queryParameters,
options: RequestOptions(
method: 'POST',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> receiveCoupon(couponId) async {
ArgumentError.checkNotNull(couponId, 'couponId');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
final _result = await _dio.request<Map<String, dynamic>>(
'/coupon/receive?couponId=$couponId',
queryParameters: queryParameters,
options: RequestOptions(
method: 'GET',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> creditOrderList(param) async {
ArgumentError.checkNotNull(param, 'param');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
_data.addAll(param ?? <String, dynamic>{});
final _result = await _dio.request<Map<String, dynamic>>(
'/creditOrder/list',
queryParameters: queryParameters,
options: RequestOptions(
method: 'POST',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> creditOrder(param) async {
ArgumentError.checkNotNull(param, 'param');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
_data.addAll(param ?? <String, dynamic>{});
final _result = await _dio.request<Map<String, dynamic>>(
'/creditOrder/create',
queryParameters: queryParameters,
options: RequestOptions(
method: 'POST',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> addAddress(param) async {
ArgumentError.checkNotNull(param, 'param');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
_data.addAll(param ?? <String, dynamic>{});
final _result = await _dio.request<Map<String, dynamic>>('/address/add',
queryParameters: queryParameters,
options: RequestOptions(
method: 'POST',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> deleteAddress(param) async {
ArgumentError.checkNotNull(param, 'param');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
_data.addAll(param ?? <String, dynamic>{});
final _result = await _dio.request<Map<String, dynamic>>('/address/delete',
queryParameters: queryParameters,
options: RequestOptions(
method: 'POST',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> queryAddress(id) async {
ArgumentError.checkNotNull(id, 'id');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
final _result = await _dio.request<Map<String, dynamic>>(
'/address/detail/$id',
queryParameters: queryParameters,
options: RequestOptions(
method: 'GET',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> queryMemberAddress() async {
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
final _result = await _dio.request<Map<String, dynamic>>(
'/address/queryMemberAddress',
queryParameters: queryParameters,
options: RequestOptions(
method: 'GET',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> updateAddress(param) async {
ArgumentError.checkNotNull(param, 'param');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
_data.addAll(param ?? <String, dynamic>{});
final _result = await _dio.request<Map<String, dynamic>>('/address/update',
queryParameters: queryParameters,
options: RequestOptions(
method: 'POST',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> queryCoupon(param) async {
ArgumentError.checkNotNull(param, 'param');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
_data.addAll(param ?? <String, dynamic>{});
final _result = await _dio.request<Map<String, dynamic>>(
'/coupon/centreList',
queryParameters: queryParameters,
options: RequestOptions(
method: 'POST',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> queryCard(param) async {
ArgumentError.checkNotNull(param, 'param');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
_data.addAll(param ?? <String, dynamic>{});
final _result = await _dio.request<Map<String, dynamic>>(
'/coupon/packageList',
queryParameters: queryParameters,
options: RequestOptions(
method: 'POST',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> queryStore(param) async {
ArgumentError.checkNotNull(param, 'param');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
_data.addAll(param ?? <String, dynamic>{});
final _result = await _dio.request<Map<String, dynamic>>('/store/list',
queryParameters: queryParameters,
options: RequestOptions(
method: 'POST',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> informationList(param) async {
ArgumentError.checkNotNull(param, 'param');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
_data.addAll(param ?? <String, dynamic>{});
final _result = await _dio.request<Map<String, dynamic>>(
'/information/list',
queryParameters: queryParameters,
options: RequestOptions(
method: 'POST',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> informationInfo(id) async {
ArgumentError.checkNotNull(id, 'id');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
final _result = await _dio.request<Map<String, dynamic>>('/information/$id',
queryParameters: queryParameters,
options: RequestOptions(
method: 'GET',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> creditOrderReceive(id) async {
ArgumentError.checkNotNull(id, 'id');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
final _result = await _dio.request<Map<String, dynamic>>(
'/creditOrder/receive/$id',
queryParameters: queryParameters,
options: RequestOptions(
method: 'GET',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> queryHome() async {
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
final _result = await _dio.request<Map<String, dynamic>>('/home/home',
queryParameters: queryParameters,
options: RequestOptions(
method: 'GET',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> queryStoreInfo(id) async {
ArgumentError.checkNotNull(id, 'id');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
final _result = await _dio.request<Map<String, dynamic>>('/store/$id',
queryParameters: queryParameters,
options: RequestOptions(
method: 'GET',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> queryArticle(param) async {
ArgumentError.checkNotNull(param, 'param');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
_data.addAll(param ?? <String, dynamic>{});
final _result = await _dio.request<Map<String, dynamic>>(
'/information/list',
queryParameters: queryParameters,
options: RequestOptions(
method: 'POST',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> queryBanner(param) async {
ArgumentError.checkNotNull(param, 'param');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
_data.addAll(param ?? <String, dynamic>{});
final _result = await _dio.request<Map<String, dynamic>>('/banner/page',
queryParameters: queryParameters,
options: RequestOptions(
method: 'POST',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> queryHomeBrand() async {
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
final _result = await _dio.request<Map<String, dynamic>>('/home/brand',
queryParameters: queryParameters,
options: RequestOptions(
method: 'GET',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> minLogin(storeId) async {
ArgumentError.checkNotNull(storeId, 'storeId');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
final _result = await _dio.request<Map<String, dynamic>>(
'/auth/mini/login/$storeId',
queryParameters: queryParameters,
options: RequestOptions(
method: 'GET',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> queryBillInfo(param) async {
ArgumentError.checkNotNull(param, 'param');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
_data.addAll(param ?? <String, dynamic>{});
final _result = await _dio.request<Map<String, dynamic>>('/member/listBill',
queryParameters: queryParameters,
options: RequestOptions(
method: 'POST',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> rankList() async {
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
final _result = await _dio.request<Map<String, dynamic>>('/member/rankList',
queryParameters: queryParameters,
options: RequestOptions(
method: 'GET',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> orderList(param) async {
ArgumentError.checkNotNull(param, 'param');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
_data.addAll(param ?? <String, dynamic>{});
final _result = await _dio.request<Map<String, dynamic>>('/order/list',
queryParameters: queryParameters,
options: RequestOptions(
method: 'POST',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> orderDetail(id) async {
ArgumentError.checkNotNull(id, 'id');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
final _result = await _dio.request<Map<String, dynamic>>(
'/order/orderDetail?id=$id',
queryParameters: queryParameters,
options: RequestOptions(
method: 'GET',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> continuePay(param) async {
ArgumentError.checkNotNull(param, 'param');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
_data.addAll(param ?? <String, dynamic>{});
final _result = await _dio.request<Map<String, dynamic>>(
'/order/continuePay',
queryParameters: queryParameters,
options: RequestOptions(
method: 'POST',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> receiveToCard(id) async {
ArgumentError.checkNotNull(id, 'id');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
final _result = await _dio.request<Map<String, dynamic>>(
'/creditOrder/receive/$id',
queryParameters: queryParameters,
options: RequestOptions(
method: 'GET',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> vipList() async {
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
final _result = await _dio.request<Map<String, dynamic>>('/member/vipList',
queryParameters: queryParameters,
options: RequestOptions(
method: 'GET',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
@override
Future<BaseData> vipDetail(id) async {
ArgumentError.checkNotNull(id, 'id');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
final _result = await _dio.request<Map<String, dynamic>>(
'/member/vipDetail/$id',
queryParameters: queryParameters,
options: RequestOptions(
method: 'GET',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
final value = BaseData.fromJson(_result.data);
return value;
}
}

59
lib/union/union_details_page.dart

@ -26,6 +26,7 @@ import 'package:path_provider/path_provider.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
import 'package:url_launcher/url_launcher.dart';
class UnionDetailsPage extends StatefulWidget {
final Map<String, dynamic> arguments;
@ -218,10 +219,15 @@ class _UnionDetailsPage extends State<UnionDetailsPage> {
SizedBox(
width: 16.w,
),
Image.asset(
"assets/image/icon_union_call.png",
width: 24.w,
height: 24.h,
InkWell(
onTap: () {
showCallMobile();
},
child: Image.asset(
"assets/image/icon_union_call.png",
width: 24.w,
height: 24.h,
),
)
],
),
@ -540,7 +546,11 @@ class _UnionDetailsPage extends State<UnionDetailsPage> {
.couponVOList[position].bizType ==
1)
? "${double.tryParse(storeInfo.couponVOList[position].discountAmount).toInt()}"
: "${storeInfo.couponVOList[position].discountPercent}",
: (storeInfo != null &&
storeInfo.couponVOList != null &&
storeInfo
.couponVOList[position].bizType ==
5) ? S.of(context).duihuanquan : "${storeInfo.couponVOList[position].discountPercent / 10}",
style: TextStyle(
fontSize: 36.sp,
color: Color(0xFFFF7A1A),
@ -1066,4 +1076,43 @@ class _UnionDetailsPage extends State<UnionDetailsPage> {
))
.toList();
}
showCallMobile() {
showCupertinoModalPopup(
context: context,
builder: (contetx) {
return CupertinoActionSheet(
title: Text(S.of(context).bodadianhua),
actions: [
if (storeInfo != null && storeInfo.headMobile != null && storeInfo.headMobile != "")
CupertinoActionSheetAction(
child: Text(storeInfo.headMobile),
onPressed: () {
callMobile(storeInfo.headMobile);
Navigator.of(context).pop();
},
isDefaultAction: true,
isDestructiveAction: false,
),
],
cancelButton: CupertinoActionSheetAction(
onPressed: () {
Navigator.of(context).pop();
},
child: Text(S.of(context).quxiao),
isDestructiveAction: true,
),
);
});
}
callMobile(mobile) async {
String url = "tel:$mobile";
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
}

2
lib/utils/flutter_utils.dart

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

17
lib/utils/font_weight.dart

@ -0,0 +1,17 @@
import 'dart:ui';
class MyFontWeight {
static const FontWeight thin = FontWeight.w100;
static const FontWeight extra_light = FontWeight.w200;
static const FontWeight light = FontWeight.w300;
static const FontWeight regular = FontWeight.w400;
static const FontWeight medium = FontWeight.w500;
static const FontWeight semi_bold = FontWeight.w600;
static const FontWeight bold = FontWeight.w700;
static const FontWeight extra_bold = FontWeight.w800;
static const FontWeight black = FontWeight.w900;
}

151
lib/view_widget/item_input_widget.dart

@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:huixiang/utils/font_weight.dart';
import 'package:huixiang/view_widget/border_text.dart';
class ItemInputWidget extends StatelessWidget {
@ -25,8 +26,6 @@ class ItemInputWidget extends StatelessWidget {
final String errorText;
final Color errorTextColor;
final Color titleColor;
final int inputType;
final double heightPercentage;
final double radius;
final EdgeInsets padding;
final TextInputType textInputType;
@ -47,20 +46,18 @@ class ItemInputWidget extends StatelessWidget {
this.errorText = "",
this.errorTextColor = const Color(0xFFFF441A),
this.titleColor = Colors.black,
this.heightPercentage,
this.padding =
const EdgeInsets.only(left: 20, right: 21, top: 16, bottom: 4),
this.btnText,
this.inputType = 0,
this.textInputFormatter,
this.isShowBtn = false,
});
@override
Widget build(BuildContext context) {
var color = Color(0xFFA29E9E);
var color = Color(0xFFF7F7F7);
if (inputState == 0) {
color = Color(0xFFA29E9E);
color = Color(0xFFF7F7F7);
} else if (inputState == 1) {
color = Color(0xFF37A546);
} else {
@ -72,8 +69,7 @@ class ItemInputWidget extends StatelessWidget {
);
return Container(
height: heightPercentage,
margin: EdgeInsets.only(left: 20, right: 20, top: 12, bottom: 4),
margin: EdgeInsets.only(left: 20.w, right: 20.w, top: 12.h, bottom: 4.h),
padding: padding,
decoration: BoxDecoration(
boxShadow: [
@ -98,102 +94,59 @@ class ItemInputWidget extends StatelessWidget {
color: titleColor,
),
),
if (inputType == 1)
SizedBox(
height: 5,
),
SizedBox(
height: 5.h,
),
Container(
height: inputType == 1 ? 30 : 0.03.sh,
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.end,
mainAxisSize: MainAxisSize.max,
alignment: Alignment.centerLeft,
child: Stack(
alignment: Alignment.centerLeft,
children: [
Expanded(
child: Container(
alignment: Alignment.centerLeft,
child: Stack(
alignment: Alignment.centerLeft,
children: [
if (inputType == 1)
Container(
alignment: Alignment.centerLeft,
child: Text(
"¥",
style: TextStyle(
fontWeight: FontWeight.bold,
color: style.color,
fontSize: 26.sp,
),
),
margin: EdgeInsets.only(left: 5),
),
Container(
child: TextField(
controller: controller,
style: style,
onChanged: onChanged,
keyboardType: textInputType,
decoration: InputDecoration(
errorBorder: inputBorder,
focusedBorder: inputBorder,
enabledBorder: inputBorder,
hintText: hintText,
contentPadding: EdgeInsets.only(
top: 12,
bottom: 12,
left: inputType == 1 ? 22 : 0,
),
hintStyle: TextStyle(
fontSize: 10,
color: Color(0xFFA29E9E),
),
),
textInputAction: TextInputAction.next,
inputFormatters: [
LengthLimitingTextInputFormatter(inputLimit),
textInputFormatter
],
cursorColor: Colors.grey,
maxLines: 1,
minLines: 1,
),
),
],
Container(
width: 20.w,
alignment: Alignment.centerLeft,
child: Text(
"¥",
style: TextStyle(
fontWeight: MyFontWeight.medium,
color: style.color,
fontSize: 26.sp,
),
),
flex: 5,
margin: EdgeInsets.only(left: 5, bottom: 12.h),
),
if (isShowBtn ?? false)
Expanded(
flex: 3,
child: Row(
mainAxisAlignment: MainAxisAlignment.end,
crossAxisAlignment: CrossAxisAlignment.end,
children: [
InkWell(
onTap: onTap,
child: Container(
margin: EdgeInsets.only(left: 20),
child: BorderText(
text: btnText,
borderColor: btnState == 0
? Color(0xFF32A060)
: Color(0xFFFE951E),
borderWidth: 1,
radius: 2,
padding: EdgeInsets.only(
left: 8, right: 8, top: 4, bottom: 4),
fontSize: 10,
textColor: btnState == 0
? Color(0xFF32A060)
: Color(0xFFFE951E),
),
),
),
],
Container(
height: 0.035.sh,
child: TextField(
controller: controller,
style: style,
onChanged: onChanged,
keyboardType: textInputType,
decoration: InputDecoration(
errorBorder: inputBorder,
focusedBorder: inputBorder,
enabledBorder: inputBorder,
hintText: hintText,
contentPadding: EdgeInsets.only(
top: 12.h,
bottom: 12.h,
left: 24.w,
),
hintStyle: TextStyle(
fontSize: 10.sp,
color: Color(0xFFA29E9E),
),
),
)
textInputAction: TextInputAction.next,
inputFormatters: [
LengthLimitingTextInputFormatter(inputLimit),
textInputFormatter
],
cursorColor: Colors.grey,
maxLines: 1,
minLines: 1,
),
),
],
),
),
@ -203,7 +156,7 @@ class ItemInputWidget extends StatelessWidget {
errorText ?? "",
style: TextStyle(
color: errorTextColor,
fontSize: 12,
fontSize: 12.sp,
),
),
)

139
lib/view_widget/message_item.dart

@ -1,9 +1,11 @@
import 'package:flutter/material.dart';
import 'package:huixiang/generated/l10n.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
class MessageItem extends StatefulWidget {
final Function(bool) onChanged;
final int stststatus;
MessageItem(this.stststatus, this.onChanged);
final int stStatus;
MessageItem(this.stStatus);
@override
_MessageItemState createState() => _MessageItemState();
@ -14,76 +16,82 @@ class _MessageItemState extends State<MessageItem> {
Widget build(BuildContext context) {
return Row(
children: [
if (widget.stststatus != 0) checkView(),
if (widget.stStatus != 0) checkView(),
Container(
margin: EdgeInsets.only(left: widget.stststatus == 0 ? 16 : 0),
margin: EdgeInsets.only(left: widget.stStatus == 0 ? 16 : 0),
child: Image.network(
"https://t7.baidu.com/it/u=1297102096,3476971300&fm=193&f=GIF",
width: 44,
width: 44.w,
fit: BoxFit.cover,
height: 44,
height: 44.h,
),
),
Expanded(
flex: 1,
child: Container(
margin: EdgeInsets.only(left: 16, right: 16),
height: 44,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
"海峡姐妹",
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 14,
color: Color(0xFF060606)),
),
Text(
"2021.03.08 13:22",
style:
TextStyle(fontSize: 10, color: Color(0xFFA29E9E)),
flex: 1,
child: Container(
margin: EdgeInsets.only(left: 16, right: 16),
height: 44.h,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
S.of(context).xitongtongzhi,
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 14.sp,
color: Color(0xFF060606)),
),
Text(
"2021.03.08 13:22",
style: TextStyle(
fontSize: 10.sp,
color: Color(0xFFA29E9E),
),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Expanded(
flex: 1,
child: Text(
"2021由她上,三八妇女节感恩回馈!三八妇女节,五一劳动节,六一儿童节",
overflow: TextOverflow.ellipsis,
style: TextStyle(
fontSize: 10, color: Color(0xFF353535)),
)),
if (widget.stststatus == 0)
Container(
width: 10,
height: 10,
alignment: Alignment.center,
margin: EdgeInsets.only(left: 17),
decoration: BoxDecoration(
color: Colors.red,
borderRadius:
BorderRadius.all(Radius.circular(5))),
child: Text(
"1",
style: TextStyle(
fontSize: 7, color: Color(0xFFFFFFFF)),
),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Expanded(
flex: 1,
child: Text(
"2021由她上,三八妇女节感恩回馈!三八妇女节,五一劳动节,六一儿童节",
overflow: TextOverflow.ellipsis,
style: TextStyle(
fontSize: 10.sp,
color: Color(0xFF353535),
),
)),
if (widget.stStatus == 0)
Container(
width: 10.w,
height: 10.h,
alignment: Alignment.center,
margin: EdgeInsets.only(left: 17),
decoration: BoxDecoration(
color: Colors.red,
borderRadius: BorderRadius.circular(5)),
child: Text(
"1",
style: TextStyle(
fontSize: 7,
color: Color(0xFFFFFFFF),
),
)
],
),
],
),
)),
),
)
],
),
],
),
),
),
],
);
}
@ -96,9 +104,6 @@ class _MessageItemState extends State<MessageItem> {
setState(() {
_isCheck = !_isCheck;
});
if (widget.onChanged != null) {
widget.onChanged.call(_isCheck);
}
},
child: Container(
padding: EdgeInsets.all(16),

2
lib/view_widget/mine_vip_view.dart

@ -34,6 +34,8 @@ class MineVipView extends StatelessWidget {
if (curLevel == vipLevel) {
topLeft = S.of(context).dangqiandengji;
} else if(vipLevel < curLevel) {
topLeft = S.of(context).shangyidengji;
} else {
topLeft = S.of(context).xiayidengji;
}

75
lib/view_widget/new_coupon_widget.dart

@ -256,6 +256,36 @@ class NewCouponWidget extends StatelessWidget {
),
],
);
} else if (coupon.bizType == 5) {
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: FontWeight.bold,
color: Color(0xff32A060),
),
),
],
),
),
Text(
S.of(context).xianxiashiyong,
style: TextStyle(
fontSize: 12.sp,
fontWeight: FontWeight.bold,
color: Color(0xff32A060),
),
),
],
);
} else {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
@ -269,8 +299,8 @@ class NewCouponWidget extends StatelessWidget {
children: [
Text(
coupon != null
? double.tryParse("${coupon.discountPercent}" ?? "0")
.toInt()
? double.tryParse(
"${coupon.discountPercent / 10.0}" ?? "0")
.toString()
: "",
style: TextStyle(
@ -353,33 +383,36 @@ class NewCouponWidget extends StatelessWidget {
} else {
if (coupon != null && coupon.status == 1) {
return Align(
alignment: Alignment.centerRight,
child: InkWell(
onTap: () {
callback(type);
},
child: Container(
padding: EdgeInsets.fromLTRB(16.w, 2.h, 16.w, 2.h),
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(10.5)),
color: Color(0xFF32A060),
),
child: Text(
S.of(context).qushiyong,
style: TextStyle(
fontSize: 12.sp,
color: Colors.white,
),
alignment: Alignment.centerRight,
child: InkWell(
onTap: () {
callback(type);
},
child: Container(
padding: EdgeInsets.fromLTRB(16.w, 2.h, 16.w, 2.h),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.5),
color: Color(0xFF32A060),
),
child: Text(
(coupon.bizType == 5)
? S.of(context).quhexiao
: S.of(context).qushiyong,
style: TextStyle(
fontSize: 12.sp,
color: Colors.white,
),
),
));
),
),
);
} else if (coupon != null && coupon.status == 2) {
return Align(
alignment: Alignment.centerRight,
child: Container(
padding: EdgeInsets.fromLTRB(16.w, 2.h, 16.w, 2.h),
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(10.5)),
borderRadius: BorderRadius.circular(10.5),
// border: Border.all(
// width: 1, color: Color(0xFFA0A0A0), style: BorderStyle.solid)
color: Color(0xFFA0A0A0),

322
pubspec.lock

File diff suppressed because it is too large Load Diff

2
pubspec.yaml

@ -72,7 +72,7 @@ dependencies:
shared_preferences: ^2.0.6
flutter_smart_dialog: ^2.1.6
# url_launcher: ^6.0.5
url_launcher: ^6.0.5
# app_links: ^2.1.0
# crop_image: ^1.0.1

Loading…
Cancel
Save