diff --git a/lib/constants/api_v2.dart b/lib/constants/api_v2.dart index 28cef88..03f1e15 100644 --- a/lib/constants/api_v2.dart +++ b/lib/constants/api_v2.dart @@ -54,16 +54,16 @@ class UserAPI { String get platformDetail => '/v2/app/user/income/reward_month_income'; ///未到账收益 - String get notRceivedDetail => '/v2/app/user/income/nr/detail'; + String get notReceivedDetail => '/v2/app/user/income/nr/detail'; ///到账收益 - String get rceivedDetail => '/v2/app/user/income/detail'; + String get receivedDetail => '/v2/app/user/income/detail'; ///团队未到账收益 - String get groupNotRceivedDetail => '/v2/app/user/income/team/nr/detail'; + String get groupNotReceivedDetail => '/v2/app/user/income/team/nr/detail'; ///团队到账收益 - String get groupRceivedDetail => '/v2/app/user/income/team/detail'; + String get groupReceivedDetail => '/v2/app/user/income/team/detail'; ///我的团队列表 String get myGroup => '/v2/app/user/team'; diff --git a/lib/pages/login/login_page.dart b/lib/pages/login/login_page.dart index dbd4026..d3c4269 100644 --- a/lib/pages/login/login_page.dart +++ b/lib/pages/login/login_page.dart @@ -7,6 +7,7 @@ * ==================================================== */ +import 'package:flutter/cupertino.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; @@ -20,6 +21,7 @@ import 'package:recook/pages/login/wechat_bind_page.dart'; import 'package:recook/pages/welcome/privacy_page_v2.dart'; import 'package:recook/third_party/wechat/wechat_utils.dart'; import 'package:recook/utils/custom_route.dart'; +import 'package:recook/widgets/alert.dart'; import 'package:recook/widgets/progress/sc_dialog.dart'; import 'package:recook/widgets/toast.dart'; @@ -34,6 +36,8 @@ class _LoginPageState extends BaseStoreState { BuildContext _context; bool _weChatLoginLoading = false; bool _hasInstallWeChat = false; + + bool _chooseAgreement = false; @override initState() { super.initState(); @@ -132,17 +136,38 @@ class _LoginPageState extends BaseStoreState { /// _buildWeChatLogin(), - RichText( - text: TextSpan( - text: "登录代表您已阅读并同意", - style: - TextStyle(color: Colors.grey[500], fontSize: 14 * 2.sp), - children: [ - new TextSpan( - text: '《用户协议和隐私政策》', - style: new TextStyle(color: Colors.red), - recognizer: _recognizer(context)), - ])), + + GestureDetector( + onTap: () { + _chooseAgreement = !_chooseAgreement; + setState(() {}); + }, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + width: 50.w, + height: 50.w, + padding: EdgeInsets.only(top: 10.w, right: 5.w), + child: !_chooseAgreement + ? Icon(CupertinoIcons.square, + size: 20, color: Colors.red) + : Icon(CupertinoIcons.checkmark_square, + size: 20, color: Colors.red)), + RichText( + text: TextSpan( + text: "您已阅读并同意", + style: TextStyle( + color: Colors.grey[500], fontSize: 14 * 2.sp), + children: [ + new TextSpan( + text: '《用户协议和隐私政策》', + style: new TextStyle(color: Colors.red), + recognizer: _recognizer(context)), + ])), + ], + ), + ), /// Container( @@ -166,20 +191,37 @@ class _LoginPageState extends BaseStoreState { ), child: MaterialButton( onPressed: () { - DPrint.printf("微信登录"); - WeChatUtils.wxLogin((WXLoginResult result) { - if (result.errCode == -2) { - Toast.showInfo('用户取消登录'); - } else if (result.errCode != 0) { - GSDialog.of(context).dismiss(_context); - Toast.showInfo(result.errStr); - } else { - if (!_weChatLoginLoading) { - _weChatLoginLoading = true; - _weChatLogin(result.code); + if (_chooseAgreement) { + DPrint.printf("微信登录"); + WeChatUtils.wxLogin((WXLoginResult result) { + if (result.errCode == -2) { + Toast.showInfo('用户取消登录'); + } else if (result.errCode != 0) { + GSDialog.of(context).dismiss(_context); + Toast.showInfo(result.errStr); + } else { + if (!_weChatLoginLoading) { + _weChatLoginLoading = true; + _weChatLogin(result.code); + } } - } - }); + }); + } else { + Alert.show( + context, + NormalContentDialog( + type: NormalTextDialogType.remind, + title: null, + content: Text( + '请您先阅读并同意《用户协议和隐私政策》', + style: TextStyle(color: Colors.black), + ), + items: ["确认"], + listener: (index) { + Alert.dismiss(context); + }, + )); + } }, child: Row( mainAxisAlignment: MainAxisAlignment.center, diff --git a/lib/pages/login/phone_login_page.dart b/lib/pages/login/phone_login_page.dart index a9df6b8..3a71a2e 100644 --- a/lib/pages/login/phone_login_page.dart +++ b/lib/pages/login/phone_login_page.dart @@ -9,6 +9,8 @@ import 'dart:async'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -16,6 +18,9 @@ import 'package:recook/base/base_store_state.dart'; import 'package:recook/constants/header.dart'; import 'package:recook/daos/user_dao.dart'; import 'package:recook/manager/user_manager.dart'; +import 'package:recook/pages/welcome/privacy_page_v2.dart'; +import 'package:recook/utils/custom_route.dart'; +import 'package:recook/widgets/alert.dart'; import 'package:recook/widgets/custom_app_bar.dart'; import 'package:recook/widgets/progress/sc_dialog.dart'; import 'package:recook/widgets/text_button.dart' as TButton; @@ -34,6 +39,7 @@ class _PhoneLoginPageState extends BaseStoreState { FocusNode _phoneNode; FocusNode _smsCodeNode; + bool _chooseAgreement = false; Timer _timer; String _countDownStr = "获取验证码"; int _countDownNum = 59; @@ -46,7 +52,7 @@ class _PhoneLoginPageState extends BaseStoreState { super.initState(); if (AppConfig.debug) { - _smsCodeController = TextEditingController(text: "0520"); + _smsCodeController = TextEditingController(text: "0716"); _phoneController = TextEditingController(text: "18906611076"); _loginEnable = true; _getCodeEnable = true; @@ -88,7 +94,7 @@ class _PhoneLoginPageState extends BaseStoreState { }, child: SingleChildScrollView( child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, + crossAxisAlignment: CrossAxisAlignment.center, children: [ Container( height: rSize(20), @@ -102,13 +108,60 @@ class _PhoneLoginPageState extends BaseStoreState { _phoneText(), _smsCode(), _bottomOperation(), - _loginButton(context) + _loginButton(context), + 40.hb, + GestureDetector( + onTap: () { + _chooseAgreement = !_chooseAgreement; + setState(() {}); + }, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + width: 50.w, + height: 50.w, + padding: EdgeInsets.only(top: 10.w, right: 5.w), + child: !_chooseAgreement + ? Icon(CupertinoIcons.square, + size: 20, color: Colors.red) + : Icon(CupertinoIcons.checkmark_square, + size: 20, color: Colors.red)), + RichText( + text: TextSpan( + text: "您已阅读并同意", + style: TextStyle( + color: Colors.grey[500], fontSize: 14 * 2.sp), + children: [ + new TextSpan( + text: '《用户协议和隐私政策》', + style: new TextStyle(color: Colors.red), + recognizer: _recognizer(context)), + ])), + ], + ), + ), ], ), ), )); } + _recognizer(context) { + final TapGestureRecognizer recognizer = new TapGestureRecognizer(); + recognizer.onTap = () { + // print("点击协议了"); + // AppRouter.push( + // context, + // RouteName.WEB_VIEW_PAGE, + // arguments: WebViewPage.setArguments( + // url: WebApi.privacy, title: "用户使用协议", hideBar: true), + // ); + CRoute.push(context, PrivacyPageV2()); + }; + return recognizer; + } + Container _phoneText() { return Container( margin: @@ -212,17 +265,34 @@ class _PhoneLoginPageState extends BaseStoreState { highlightTextColor: Colors.grey[400], border: Border(left: BorderSide(color: Colors.grey[500])), onTap: () { - if (!TextUtils.verifyPhone(_phoneController.text)) { - showError("手机号码格式不正确!"); - return; + if (_chooseAgreement) { + if (!TextUtils.verifyPhone(_phoneController.text)) { + showError("手机号码格式不正确!"); + return; + } + if (_cantSelected) return; + _cantSelected = true; + Future.delayed(Duration(seconds: 2), () { + _cantSelected = false; + }); + GSDialog.of(context).showLoadingDialog(context, "正在发送.."); + _getSmsCode(context); + } else { + Alert.show( + context, + NormalContentDialog( + type: NormalTextDialogType.remind, + title: null, + content: Text( + '请您先阅读并同意《用户协议和隐私政策》', + style: TextStyle(color: Colors.black), + ), + items: ["确认"], + listener: (index) { + Alert.dismiss(context); + }, + )); } - if (_cantSelected) return; - _cantSelected = true; - Future.delayed(Duration(seconds: 2), () { - _cantSelected = false; - }); - GSDialog.of(context).showLoadingDialog(context, "正在发送.."); - _getSmsCode(context); }, ), ], @@ -270,8 +340,25 @@ class _PhoneLoginPageState extends BaseStoreState { radius: BorderRadius.all(Radius.circular(5)), backgroundColor: Theme.of(context).primaryColor, onTap: () { - GSDialog.of(context).showLoadingDialog(context, "正在登录..."); - _phoneLogin(context); + if (_chooseAgreement) { + GSDialog.of(context).showLoadingDialog(context, "正在登录..."); + _phoneLogin(context); + } else { + Alert.show( + context, + NormalContentDialog( + type: NormalTextDialogType.remind, + title: null, + content: Text( + '请您先阅读并同意《用户协议和隐私政策》', + style: TextStyle(color: Colors.black), + ), + items: ["确认"], + listener: (index) { + Alert.dismiss(context); + }, + )); + } }, ); } diff --git a/lib/pages/user/order/order_list_page.dart b/lib/pages/user/order/order_list_page.dart index c299049..32528b4 100644 --- a/lib/pages/user/order/order_list_page.dart +++ b/lib/pages/user/order/order_list_page.dart @@ -30,17 +30,28 @@ import 'package:recook/widgets/mvp_list_view/mvp_list_view.dart'; import 'package:recook/widgets/mvp_list_view/mvp_list_view_contact.dart'; enum OrderPositionType { - onlineOrder, // 线上订单 - storeOrder, // 门店订单 - } -enum OrderListType { all, unpaid, undelivered, receipt , afterSale ,} + onlineOrder, // 线上订单 + storeOrder, // 门店订单 +} +enum OrderListType { + all, + unpaid, + undelivered, + receipt, + afterSale, +} class OrderListPage extends StatefulWidget { final OrderListType type; final OrderPositionType positionType; final OrderListController controller; - const OrderListPage({Key key, this.type, this.positionType=OrderPositionType.onlineOrder, this.controller}) : super(key: key); + const OrderListPage( + {Key key, + this.type, + this.positionType = OrderPositionType.onlineOrder, + this.controller}) + : super(key: key); @override State createState() { @@ -69,8 +80,8 @@ class _OrderListPageState extends BaseStoreState @override void initState() { super.initState(); - widget.controller.refresh = (){ - if (mounted && _controller!=null) { + widget.controller.refresh = () { + if (mounted && _controller != null) { _controller.requestRefresh(); } }; @@ -87,10 +98,11 @@ class _OrderListPageState extends BaseStoreState pageSize: 10, itemClickListener: (index) { OrderModel orderModel = _controller.getData()[index]; + AppRouter.push(globalContext, RouteName.ORDER_DETAIL, arguments: OrderDetailPage.setArguments(orderModel.id)) .then(((result) { - _controller.requestRefresh(); + _controller.requestRefresh(); if (result == null) return; DPrint.printf(result); setState(() { @@ -110,18 +122,21 @@ class _OrderListPageState extends BaseStoreState goToPay: (OrderModel order, {callback}) { _goToPay(order); }, - delete: (OrderModel order, {callback}){ + delete: (OrderModel order, {callback}) { _deleteOrder(order); }, - confirm: (OrderModel order, {callback}){ + confirm: (OrderModel order, {callback}) { _confirmReceiptClick(order); }, applyRefund: (OrderModel order, {callback}) {}, evaluation: (OrderModel order, {callback}) { List goodsList = []; - order.goodsList.forEach((goods){ + order.goodsList.forEach((goods) { if (goods.assType == 0) { - goodsList.add(EvaluationGoodsModel(id: goods.goodsId, mainPhotoUrl: goods.mainPhotoUrl, goodsName: goods.goodsName)); + goodsList.add(EvaluationGoodsModel( + id: goods.goodsId, + mainPhotoUrl: goods.mainPhotoUrl, + goodsName: goods.goodsName)); } }); // order.brands.forEach((brand) { @@ -130,24 +145,26 @@ class _OrderListPageState extends BaseStoreState // id: goods.goodsId, mainPhotoUrl: goods.mainPhotoUrl, goodsName: goods.goodsName)); // }); // }); - + push(RouteName.ORDER_EVALUATION, - arguments: - PublishEvaluationPage.setArguments(orderId: order.id, goodsList: goodsList)); + arguments: PublishEvaluationPage.setArguments( + orderId: order.id, goodsList: goodsList)); }, ); }, refreshCallback: () { - _presenter.getOrderList(UserManager.instance.user.info.id, 0, widget.type, widget.positionType); + _presenter.getOrderList(UserManager.instance.user.info.id, 0, + widget.type, widget.positionType); }, loadMoreCallback: (page) { - _presenter.getOrderList(UserManager.instance.user.info.id, page, widget.type, widget.positionType); + _presenter.getOrderList(UserManager.instance.user.info.id, page, + widget.type, widget.positionType); }, noDataView: noDataView("没有订单数据哦~"), ); } - _deleteOrder(OrderModel order){ + _deleteOrder(OrderModel order) { Alert.show( globalContext, NormalTextDialog( @@ -161,6 +178,7 @@ class _OrderListPageState extends BaseStoreState }, )); } + _cancelOrder(OrderModel order) { Alert.show( globalContext, @@ -171,14 +189,17 @@ class _OrderListPageState extends BaseStoreState Alert.dismiss(globalContext); if (index == 0) return; GSDialog.of(context).showLoadingDialog(globalContext, ""); - _presenter.cancelOrder(UserManager.instance.user.info.id, order.id, order: order); + _presenter.cancelOrder(UserManager.instance.user.info.id, order.id, + order: order); }, )); } _goToPay(OrderModel order) async { - Data data = Data(order.id, order.userId, order.actualTotalAmount, order.status, order.createdAt); + Data data = Data(order.id, order.userId, order.actualTotalAmount, + order.status, order.createdAt); OrderPrepayModel model = OrderPrepayModel("SUCCESS", data, ""); + AppRouter.push(globalContext, RouteName.ORDER_PREPAY_PAGE, arguments: OrderPrepayPage.setArguments(model)); // Future.delayed(Duration(seconds: 1), () @@ -187,26 +208,33 @@ class _OrderListPageState extends BaseStoreState // }); } - _confirmReceiptClick(OrderModel orderModel){ + _confirmReceiptClick(OrderModel orderModel) { _confirmModel = null; Alert.show( context, NormalContentDialog( title: "确认收货", - content: Text("确认收货后无法发起售后申请,请确认您的商品无误。继续确认?", style: TextStyle(color: Colors.black,),), + content: Text( + "确认收货后无法发起售后申请,请确认您的商品无误。继续确认?", + style: TextStyle( + color: Colors.black, + ), + ), items: ["取消", "确认收货"], - listener: (int index){// Alert.dismiss(context); - if (index == 0) {// + listener: (int index) { + // Alert.dismiss(context); + if (index == 0) { + // Alert.dismiss(context); - }else{ + } else { Alert.dismiss(context); GSDialog.of(globalContext).showLoadingDialog(context, ""); - _presenter.confirmReceipt(UserManager.instance.user.info.id, orderModel.id); + _presenter.confirmReceipt( + UserManager.instance.user.info.id, orderModel.id); _confirmModel = orderModel; } }, - ) - ); + )); } @override @@ -230,7 +258,7 @@ class _OrderListPageState extends BaseStoreState if (model.id == orderId && model.id != null) { deleteOrderModel = model; break; - } + } } _controller.getData().remove(deleteOrderModel); setState(() {}); @@ -254,12 +282,12 @@ class _OrderListPageState extends BaseStoreState applyInvoiceSuccess() {} @override - confirmReceiptSuccess(UserRoleUpgradeModel model){ + confirmReceiptSuccess(UserRoleUpgradeModel model) { GSDialog.of(context).dismiss(globalContext); GSDialog.of(globalContext).showSuccess(globalContext, "确认成功").then((value) { UserLevelTool.showUpgradeWidget(model, globalContext, getStore()); }); - _presenter.getOrderList(UserManager.instance.user.info.id, 0, widget.type, widget.positionType); + _presenter.getOrderList( + UserManager.instance.user.info.id, 0, widget.type, widget.positionType); } - } diff --git a/lib/pages/user/review/add_review_page.dart b/lib/pages/user/review/add_review_page.dart index 183cfcd..baaf7e0 100644 --- a/lib/pages/user/review/add_review_page.dart +++ b/lib/pages/user/review/add_review_page.dart @@ -66,7 +66,8 @@ class _AddReviewPageState extends State { children: [ FadeInImage.assetNetwork( placeholder: R.ASSETS_PLACEHOLDER_NEW_1X1_A_PNG, - image: Api.getImgUrl(widget.model.mainPhotoUrl), + image: Api.getImgUrl( + widget.model.myOrderGoodsDea.mainPhotoUrl), height: rSize(56), width: rSize(56), ), @@ -77,7 +78,7 @@ class _AddReviewPageState extends State { mainAxisSize: MainAxisSize.min, children: [ Text( - widget.model.goodsName, + widget.model.myOrderGoodsDea.goodsName, maxLines: 1, overflow: TextOverflow.ellipsis, softWrap: false, @@ -89,7 +90,7 @@ class _AddReviewPageState extends State { ), SizedBox(height: rSize(6)), Text( - '型号规格 ${widget.model.skuName}', + '型号规格 ${widget.model.myOrderGoodsDea.skuName}', style: TextStyle( color: Color(0xFF666666), fontSize: rSP(13), @@ -254,7 +255,7 @@ class _AddReviewPageState extends State { Future addComment(String comment, {List> images}) async { Map params = { 'userId': UserManager.instance.user.info.id, - 'goodsDetailId': widget.model.goodsDetailId, + 'goodsDetailId': widget.model.myOrderGoodsDea.goodsDetailId, 'content': comment, }; if (images != null) params.putIfAbsent('images', () => images); diff --git a/lib/pages/user/review/models/order_review_list_model.dart b/lib/pages/user/review/models/order_review_list_model.dart index 2bbb612..65fccfc 100644 --- a/lib/pages/user/review/models/order_review_list_model.dart +++ b/lib/pages/user/review/models/order_review_list_model.dart @@ -1,4 +1,31 @@ class OrderReviewListModel { + MyOrderGoodsDea myOrderGoodsDea; + int passEvaluation; + int compliance; + + OrderReviewListModel( + {this.myOrderGoodsDea, this.passEvaluation, this.compliance}); + + OrderReviewListModel.fromJson(Map json) { + myOrderGoodsDea = json['my_order_goods_dea'] != null + ? new MyOrderGoodsDea.fromJson(json['my_order_goods_dea']) + : null; + passEvaluation = json['pass_evaluation']; + compliance = json['compliance']; + } + + Map toJson() { + final Map data = new Map(); + if (this.myOrderGoodsDea != null) { + data['my_order_goods_dea'] = this.myOrderGoodsDea.toJson(); + } + data['pass_evaluation'] = this.passEvaluation; + data['compliance'] = this.compliance; + return data; + } +} + +class MyOrderGoodsDea { int goodsDetailId; int orderId; int parentId; @@ -49,7 +76,7 @@ class OrderReviewListModel { String bomaoNo; int evaluatedId; - OrderReviewListModel( + MyOrderGoodsDea( {this.goodsDetailId, this.orderId, this.parentId, @@ -100,7 +127,7 @@ class OrderReviewListModel { this.bomaoNo, this.evaluatedId}); - OrderReviewListModel.fromJson(Map json) { + MyOrderGoodsDea.fromJson(Map json) { goodsDetailId = json['goodsDetailId']; orderId = json['orderId']; parentId = json['parentId']; diff --git a/lib/pages/user/review/review_detail_page.dart b/lib/pages/user/review/review_detail_page.dart index 00a07d0..11a2b21 100644 --- a/lib/pages/user/review/review_detail_page.dart +++ b/lib/pages/user/review/review_detail_page.dart @@ -23,7 +23,7 @@ class _ReviewDetailPageState extends State { void initState() { super.initState(); HttpManager.post(OrderApi.checkReview, { - "id": widget.reviewModel.evaluatedId, + "id": widget.reviewModel.myOrderGoodsDea.evaluatedId, }).then((data) { setState(() { _model = ReviewResultModel.fromJson(data.data['data']); @@ -69,7 +69,8 @@ class _ReviewDetailPageState extends State { children: [ FadeInImage.assetNetwork( placeholder: R.ASSETS_PLACEHOLDER_NEW_1X1_A_PNG, - image: Api.getImgUrl(widget.reviewModel.mainPhotoUrl), + image: Api.getImgUrl( + widget.reviewModel.myOrderGoodsDea.mainPhotoUrl), height: rSize(56), width: rSize(56), ), @@ -80,7 +81,7 @@ class _ReviewDetailPageState extends State { mainAxisSize: MainAxisSize.min, children: [ Text( - widget.reviewModel.goodsName, + widget.reviewModel.myOrderGoodsDea.goodsName, maxLines: 1, overflow: TextOverflow.ellipsis, softWrap: false, @@ -92,7 +93,7 @@ class _ReviewDetailPageState extends State { ), SizedBox(height: rSize(6)), Text( - '型号规格 ${widget.reviewModel.skuName}', + '型号规格 ${widget.reviewModel.myOrderGoodsDea.skuName}', style: TextStyle( color: Color(0xFF666666), fontSize: rSP(13), diff --git a/lib/pages/user/review/widgets/review_card.dart b/lib/pages/user/review/widgets/review_card.dart index 41454e7..a97b30d 100644 --- a/lib/pages/user/review/widgets/review_card.dart +++ b/lib/pages/user/review/widgets/review_card.dart @@ -34,7 +34,7 @@ class ReviewCard extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ FadeInImage.assetNetwork( - image: Api.getImgUrl(model.mainPhotoUrl), + image: Api.getImgUrl(model.myOrderGoodsDea.mainPhotoUrl), placeholder: R.ASSETS_PLACEHOLDER_NEW_1X1_A_PNG, height: rSize(80), width: rSize(80), @@ -47,7 +47,7 @@ class ReviewCard extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.start, children: [ Text( - model.goodsName, + model.myOrderGoodsDea.goodsName, maxLines: 1, overflow: TextOverflow.ellipsis, softWrap: false, @@ -59,7 +59,7 @@ class ReviewCard extends StatelessWidget { ), SizedBox(height: rSize(6)), Text( - '型号规格 ${model.skuName}', + '型号规格 ${model.myOrderGoodsDea.skuName}', style: TextStyle( color: Color(0xFF666666), fontSize: rSP(13), @@ -77,7 +77,7 @@ class ReviewCard extends StatelessWidget { ), TextSpan( text: - '¥ ${model.goodsAmount.toStringAsFixed(0)}', + '¥ ${model.myOrderGoodsDea.goodsAmount.toStringAsFixed(0)}', style: TextStyle( color: Color(0xFF333333), ), @@ -98,7 +98,7 @@ class ReviewCard extends StatelessWidget { text: '购买数量 ', ), TextSpan( - text: '${model.quantity}', + text: '${model.myOrderGoodsDea.quantity}', style: TextStyle( color: Color(0xFF333333), ), @@ -131,7 +131,7 @@ class ReviewCard extends StatelessWidget { CRoute.push( context, AddReviewPage( - goodsDetailId: model.goodsDetailId, + goodsDetailId: model.myOrderGoodsDea.goodsDetailId, model: model, ), ).then((value) { diff --git a/lib/pages/user/user_verify.dart b/lib/pages/user/user_verify.dart index 00fb352..e118573 100644 --- a/lib/pages/user/user_verify.dart +++ b/lib/pages/user/user_verify.dart @@ -7,6 +7,7 @@ import 'package:recook/manager/http_manager.dart'; import 'package:recook/manager/user_manager.dart'; import 'package:recook/pages/user/mvp/user_presenter_impl.dart'; import 'package:recook/pages/user/user_verify_result.dart'; +import 'package:recook/widgets/alert.dart'; import 'package:recook/widgets/custom_app_bar.dart'; import 'package:recook/widgets/custom_image_button.dart'; @@ -88,7 +89,12 @@ class _VerifyPageState extends BaseStoreState { ), ), _idcardWidget(), - _saveButton(context) + _saveButton(context), + Container( + padding: EdgeInsets.only(top: 20.w), + alignment: Alignment.center, + child: _verifyReseason(), + ) ], ), ), @@ -196,6 +202,51 @@ class _VerifyPageState extends BaseStoreState { ); } + _verifyReseason() { + return MaterialButton( + padding: EdgeInsets.all(4.rw), + minWidth: 0, + materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + padding: EdgeInsets.only(top: 2.w), + child: Icon( + Icons.help_outline, + size: 20.rw, + color: Color(0xFFD5101A), + ), + ), + 10.wb, + Text( + "为什么要实名认证", + style: TextStyle( + color: Colors.grey.shade500, + fontSize: 15, + fontWeight: FontWeight.w300), + ), + ], + ), + onPressed: () { + Alert.show( + context, + NormalContentDialog( + type: NormalTextDialogType.remind, + title: null, + content: Text( + '根据海关规定,购买跨境商品需要办理清关手续,请您配合进行实名认证,以确保购买的商品顺利通过海关检查。(瑞库客承诺用户上传的身份信息将仅用于办理跨境商品的清关手续,不作他途使用,并对身份信息加密)实名认证的规则:购买跨境商品需填写瑞库客账号注册人的真实姓名及身份证号码。', + style: TextStyle(color: Colors.black), + ), + items: ["我知道了"], + listener: (index) { + Alert.dismiss(context); + }, + )); + }, + ); + } + bool _canSubmit() { if (!TextUtils.isEmpty(_nameEditController.text) && (!TextUtils.isEmpty(_idCardController.text) && diff --git a/lib/widgets/alert.dart b/lib/widgets/alert.dart index 1f1dbc8..2201732 100644 --- a/lib/widgets/alert.dart +++ b/lib/widgets/alert.dart @@ -30,6 +30,8 @@ class _Styles { color: Colors.red, fontSize: 15 * 2.sp, fontWeight: FontWeight.w500); static final TextStyle disableTextStyle = TextStyle( color: Colors.grey, fontSize: 15 * 2.sp, fontWeight: FontWeight.w500); + static final TextStyle remindTextStyle = TextStyle( + color: Colors.red, fontSize: 15 * 2.sp, fontWeight: FontWeight.bold); } class Alert { @@ -47,7 +49,7 @@ class Alert { } } -enum NormalTextDialogType { normal, delete } +enum NormalTextDialogType { normal, delete, remind } ///普通文本弹框 class NormalTextDialog extends Dialog { @@ -267,7 +269,9 @@ class NormalContentDialog extends Dialog { : () { this.listener(index); }, - style: _Styles.normalTextStyle, + style: this.type != NormalTextDialogType.remind + ? _Styles.normalTextStyle + : _Styles.remindTextStyle, disableStyle: _Styles.disableTextStyle), )); }).toList();