登录增加协议确认勾选 实名认证添加说明 修改订单model

master
章文轩 4 years ago
parent 9d084c2919
commit 666138270c

@ -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';

@ -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<LoginPage> {
BuildContext _context;
bool _weChatLoginLoading = false;
bool _hasInstallWeChat = false;
bool _chooseAgreement = false;
@override
initState() {
super.initState();
@ -132,17 +136,38 @@ class _LoginPageState extends BaseStoreState<LoginPage> {
///
_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<LoginPage> {
),
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,

@ -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<PhoneLoginPage> {
FocusNode _phoneNode;
FocusNode _smsCodeNode;
bool _chooseAgreement = false;
Timer _timer;
String _countDownStr = "获取验证码";
int _countDownNum = 59;
@ -46,7 +52,7 @@ class _PhoneLoginPageState extends BaseStoreState<PhoneLoginPage> {
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<PhoneLoginPage> {
},
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Container(
height: rSize(20),
@ -102,13 +108,60 @@ class _PhoneLoginPageState extends BaseStoreState<PhoneLoginPage> {
_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<PhoneLoginPage> {
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<PhoneLoginPage> {
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);
},
));
}
},
);
}

@ -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<StatefulWidget> createState() {
@ -69,8 +80,8 @@ class _OrderListPageState extends BaseStoreState<OrderListPage>
@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<OrderListPage>
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<OrderListPage>
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<EvaluationGoodsModel> 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<OrderListPage>
// 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<OrderListPage>
},
));
}
_cancelOrder(OrderModel order) {
Alert.show(
globalContext,
@ -171,14 +189,17 @@ class _OrderListPageState extends BaseStoreState<OrderListPage>
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<OrderListPage>
// });
}
_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<OrderListPage>
if (model.id == orderId && model.id != null) {
deleteOrderModel = model;
break;
}
}
}
_controller.getData().remove(deleteOrderModel);
setState(() {});
@ -254,12 +282,12 @@ class _OrderListPageState extends BaseStoreState<OrderListPage>
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);
}
}

@ -66,7 +66,8 @@ class _AddReviewPageState extends State<AddReviewPage> {
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<AddReviewPage> {
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<AddReviewPage> {
),
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<AddReviewPage> {
Future addComment(String comment, {List<Map<String, dynamic>> 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);

@ -1,4 +1,31 @@
class OrderReviewListModel {
MyOrderGoodsDea myOrderGoodsDea;
int passEvaluation;
int compliance;
OrderReviewListModel(
{this.myOrderGoodsDea, this.passEvaluation, this.compliance});
OrderReviewListModel.fromJson(Map<String, dynamic> 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<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
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<String, dynamic> json) {
MyOrderGoodsDea.fromJson(Map<String, dynamic> json) {
goodsDetailId = json['goodsDetailId'];
orderId = json['orderId'];
parentId = json['parentId'];

@ -23,7 +23,7 @@ class _ReviewDetailPageState extends State<ReviewDetailPage> {
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<ReviewDetailPage> {
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<ReviewDetailPage> {
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<ReviewDetailPage> {
),
SizedBox(height: rSize(6)),
Text(
'型号规格 ${widget.reviewModel.skuName}',
'型号规格 ${widget.reviewModel.myOrderGoodsDea.skuName}',
style: TextStyle(
color: Color(0xFF666666),
fontSize: rSP(13),

@ -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) {

@ -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<VerifyPage> {
),
),
_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<VerifyPage> {
);
}
_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) &&

@ -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();

Loading…
Cancel
Save