You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
457 lines
14 KiB
457 lines
14 KiB
import 'package:flutter/cupertino.dart';
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:recook/base/base_store_state.dart';
|
|
import 'package:recook/constants/header.dart';
|
|
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';
|
|
|
|
class VerifyPage extends StatefulWidget {
|
|
final Map arguments;
|
|
VerifyPage({Key key, this.arguments}) : super(key: key);
|
|
// final Map arguments;
|
|
// const VerifyPage({Key key, this.arguments}) : super(key: key);
|
|
// static setArguments(Function callback){
|
|
// return {
|
|
// "callback": callback
|
|
// };
|
|
// }
|
|
|
|
@override
|
|
State<StatefulWidget> createState() {
|
|
return _VerifyPageState();
|
|
}
|
|
}
|
|
|
|
class _VerifyPageState extends BaseStoreState<VerifyPage> {
|
|
//http实例
|
|
UserPresenterImpl _presenter;
|
|
|
|
TextEditingController _nameEditController;
|
|
TextEditingController _idCardController;
|
|
|
|
bool _isCashWithdraw = false;
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
_isCashWithdraw = widget.arguments == null
|
|
? false
|
|
: widget.arguments['isCashWithdraw'] ?? false;
|
|
_presenter = UserPresenterImpl();
|
|
_nameEditController = TextEditingController();
|
|
_idCardController = TextEditingController();
|
|
}
|
|
|
|
@override
|
|
Widget buildContext(BuildContext context, {store}) {
|
|
return Scaffold(
|
|
appBar: CustomAppBar(
|
|
background: AppColor.frenchColor,
|
|
themeData: AppThemes.themeDataGrey.appBarTheme,
|
|
title: "实名认证",
|
|
elevation: 0,
|
|
backEvent: () {
|
|
pop();
|
|
},
|
|
),
|
|
backgroundColor: AppColor.frenchColor,
|
|
body: _buildBody(context),
|
|
);
|
|
}
|
|
|
|
_buildBody(BuildContext context) {
|
|
return GestureDetector(
|
|
onTap: () {
|
|
FocusScope.of(context).requestFocus(new FocusNode());
|
|
},
|
|
child: Container(
|
|
child: MediaQuery.removePadding(
|
|
context: context,
|
|
removeTop: true,
|
|
removeBottom: true,
|
|
child: ListView(
|
|
children: <Widget>[
|
|
_alertWidget(),
|
|
_nameWidget(),
|
|
Container(
|
|
height: 0.2,
|
|
width: double.infinity,
|
|
color: Colors.white,
|
|
padding: EdgeInsets.symmetric(horizontal: 17),
|
|
child: Container(
|
|
color: Color(0xffe9e9e9),
|
|
),
|
|
),
|
|
_idcardWidget(),
|
|
_saveButton(context),
|
|
Container(
|
|
padding: EdgeInsets.only(top: 20.w),
|
|
alignment: Alignment.center,
|
|
child: _verifyReseason(),
|
|
)
|
|
],
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
|
|
_alertWidget() {
|
|
return Container(
|
|
alignment: Alignment.center,
|
|
height: 30,
|
|
color: Color(0xfffff5e1),
|
|
width: double.infinity,
|
|
child: Text(
|
|
'身份认证仅限一次,请确保认证身份是本人',
|
|
style: TextStyle(color: Color(0xffe9a213), fontSize: 13),
|
|
),
|
|
);
|
|
}
|
|
|
|
_nameWidget() {
|
|
return Container(
|
|
height: 51,
|
|
width: double.infinity,
|
|
color: Colors.white,
|
|
child: Row(
|
|
children: <Widget>[
|
|
Container(
|
|
width: 90,
|
|
alignment: Alignment.center,
|
|
child: Text(
|
|
"真实姓名",
|
|
style: TextStyle(color: Colors.black, fontSize: 15),
|
|
),
|
|
),
|
|
Expanded(
|
|
child: CupertinoTextField(
|
|
keyboardType: TextInputType.text,
|
|
controller: _nameEditController,
|
|
textInputAction: TextInputAction.search,
|
|
onSubmitted: (_submitted) {
|
|
setState(() {});
|
|
},
|
|
onChanged: (text) {
|
|
setState(() {});
|
|
},
|
|
placeholder: "请输入",
|
|
placeholderStyle: TextStyle(
|
|
color: Colors.grey.shade500,
|
|
fontSize: 15,
|
|
fontWeight: FontWeight.w300),
|
|
decoration: BoxDecoration(color: Colors.white.withAlpha(0)),
|
|
style: TextStyle(
|
|
color: Colors.black,
|
|
fontSize: 15,
|
|
textBaseline: TextBaseline.ideographic),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
|
|
_idcardWidget() {
|
|
return Container(
|
|
height: 51,
|
|
width: double.infinity,
|
|
color: Colors.white,
|
|
child: Row(
|
|
children: <Widget>[
|
|
Container(
|
|
width: 90,
|
|
alignment: Alignment.center,
|
|
child: Text(
|
|
"身份证号",
|
|
style: TextStyle(color: Colors.black, fontSize: 15),
|
|
),
|
|
),
|
|
Expanded(
|
|
child: CupertinoTextField(
|
|
maxLength: 18,
|
|
keyboardType: TextInputType.text,
|
|
controller: _idCardController,
|
|
textInputAction: TextInputAction.search,
|
|
onSubmitted: (_submitted) {
|
|
setState(() {});
|
|
},
|
|
onChanged: (text) {
|
|
setState(() {});
|
|
},
|
|
placeholder: "请输入",
|
|
placeholderStyle: TextStyle(
|
|
color: Colors.grey.shade500,
|
|
fontSize: 15,
|
|
fontWeight: FontWeight.w300),
|
|
decoration: BoxDecoration(color: Colors.white.withAlpha(0)),
|
|
style: TextStyle(
|
|
color: Colors.black,
|
|
fontSize: 15,
|
|
textBaseline: TextBaseline.ideographic),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
|
|
_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) &&
|
|
_idCardController.text.length == 18)) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
Container _saveButton(BuildContext context) {
|
|
return Container(
|
|
margin: EdgeInsets.only(left: 24, right: 24, top: 20),
|
|
child: CustomImageButton(
|
|
padding: EdgeInsets.symmetric(vertical: 8),
|
|
title: "确认提交",
|
|
disabledColor: Color.fromARGB(255, 100, 100, 100),
|
|
backgroundColor:
|
|
!_canSubmit() ? AppColor.greyColor : AppColor.themeColor,
|
|
color: Colors.white,
|
|
fontSize: 16 * 2.sp,
|
|
borderRadius: BorderRadius.all(Radius.circular(2)),
|
|
onPressed: !_canSubmit()
|
|
? null
|
|
: () {
|
|
_verifyIDCard(context);
|
|
},
|
|
),
|
|
);
|
|
}
|
|
|
|
_verifyIDCard(BuildContext context) async {
|
|
FocusScope.of(context).requestFocus(FocusNode());
|
|
|
|
//网络请求验证
|
|
HttpResultModel resultModel = await _presenter.realInfo(
|
|
UserManager.instance.user.info.id,
|
|
_nameEditController.text,
|
|
_idCardController.text);
|
|
//绑定失败
|
|
if (resultModel.code != HttpStatus.SUCCESS) {
|
|
Map arguments = VerifyResultPage.setArgument(false);
|
|
arguments.putIfAbsent('isCashWithdraw', () => _isCashWithdraw);
|
|
AppRouter.pushAndReplaced(context, RouteName.USER_VERIFY_RESULT,
|
|
arguments: arguments);
|
|
// Toast.showError(resultModel.msg);
|
|
return;
|
|
} else {
|
|
setState(() {
|
|
UserManager.instance.user.info.realName = _nameEditController.text;
|
|
UserManager.instance.user.info.idCard = _idCardController.text;
|
|
UserManager.instance.user.info.realInfoStatus = true;
|
|
});
|
|
UserManager.updateUserInfo(getStore());
|
|
AppRouter.pushAndReplaced(context, RouteName.USER_VERIFY_RESULT,
|
|
arguments: VerifyResultPage.setArgument(true));
|
|
}
|
|
}
|
|
}
|
|
|
|
// import 'package:flutter/material.dart';
|
|
// import 'package:recook/base/base_store_state.dart';
|
|
// import 'package:recook/constants/header.dart';
|
|
// import 'package:recook/manager/http_manager.dart';
|
|
// import 'package:recook/manager/user_manager.dart';
|
|
// import 'package:recook/widgets/custom_app_bar.dart';
|
|
// import 'package:recook/widgets/custom_image_button.dart';
|
|
// import 'package:recook/widgets/edit_tile.dart';
|
|
// import 'package:recook/widgets/toast.dart';
|
|
// import 'package:recook/pages/user/mvp/user_presenter_impl.dart';
|
|
|
|
// class VerifyPage extends StatefulWidget{
|
|
// @override
|
|
// State<StatefulWidget> createState() {
|
|
// return _VerifyPageState();
|
|
// }
|
|
// }
|
|
|
|
// class _VerifyPageState extends BaseStoreState<VerifyPage>{
|
|
// //http实例
|
|
// UserPresenterImpl _presenter;
|
|
// String realName; //真实姓名
|
|
// String idCard; //身份证号
|
|
// // String bankAddress = ""; //开户银行地址
|
|
// // String bankNumber; //银行卡号
|
|
|
|
// @override
|
|
// void initState() {
|
|
// super.initState();
|
|
// _presenter = UserPresenterImpl();
|
|
// }
|
|
|
|
// @override
|
|
// Widget buildContext(BuildContext context, {store}) {
|
|
// return Scaffold(
|
|
// appBar: CustomAppBar(
|
|
// themeData: AppThemes.themeDataGrey.appBarTheme,
|
|
// title: "实名认证",
|
|
// elevation: 1,
|
|
// backEvent: (){
|
|
// pop();
|
|
// },
|
|
// ),
|
|
// backgroundColor: AppColor.frenchColor,
|
|
// body: _buildBody(context),
|
|
// );
|
|
// }
|
|
|
|
// _buildBody(BuildContext context){
|
|
// return GestureDetector(
|
|
// onTap: (){
|
|
// FocusScope.of(context).requestFocus(new FocusNode());
|
|
// },
|
|
// child: Container(
|
|
// child: MediaQuery.removePadding(
|
|
// context: context,
|
|
// removeTop: true,
|
|
// removeBottom: true,
|
|
// child: ListView(
|
|
// padding: EdgeInsets.all(10),
|
|
// children: <Widget>[
|
|
// Container(height: 10, ),
|
|
// Container(
|
|
// child:
|
|
// Text("为保障账户安全,需保证姓名,身份证,银行卡开户人为同一人",
|
|
// style: AppTextStyle.generate(13*2.sp,
|
|
// color: Colors.grey,)),
|
|
// padding: EdgeInsets.all(rSize(10)),
|
|
// alignment: Alignment.center,
|
|
// ),
|
|
// Container(height: 20,),
|
|
// EditTile(title: "真实姓名", hint: "请输入真实姓名", textChanged: (value){
|
|
// realName = value;
|
|
// },),
|
|
// EditTile(title: "身份证号", hint: "请输入身份证号", textChanged: (value){
|
|
// idCard = value;
|
|
// },),
|
|
// // EditTile(title: "银行开户行", hint: "请输入开户行", textChanged: (value){
|
|
// // bankAddress = value;
|
|
// // },),
|
|
// EditTile(title: "银行卡号", hint: "请输入正确的银行卡号", textChanged: (value){
|
|
// bankNumber = value;
|
|
// },),
|
|
// Container(
|
|
// height: 100,
|
|
// ),
|
|
// _saveButton(context)
|
|
// ],
|
|
// ),
|
|
// ),
|
|
// ),
|
|
// );
|
|
// }
|
|
|
|
// Container _saveButton(BuildContext context){
|
|
// return Container(
|
|
// margin: EdgeInsets.symmetric(horizontal: 40),
|
|
// child: CustomImageButton(
|
|
// padding: EdgeInsets.symmetric(vertical: 8),
|
|
// title: "立即验证",
|
|
// backgroundColor: AppColor.themeColor,
|
|
// color: Colors.white,
|
|
// fontSize: 16*2.sp,
|
|
// borderRadius: BorderRadius.all(Radius.circular(8)),
|
|
// onPressed: (){
|
|
// _verifyIDCard(context);
|
|
// },
|
|
// ),
|
|
// );
|
|
// }
|
|
|
|
// _verifyIDCard(BuildContext context) async{
|
|
// if (TextUtils.isEmpty(realName)) {
|
|
// Toast.showError("真实姓名不能为空");
|
|
// return;
|
|
// }
|
|
|
|
// if (TextUtils.isEmpty(idCard)) {
|
|
// Toast.showError("身份证号码不能为空");
|
|
// return;
|
|
// }
|
|
|
|
// // if (TextUtils.isEmpty(bankAddress)) {
|
|
// // Toast.showError("银行开户行不能为空");
|
|
// // return;
|
|
// // }
|
|
|
|
// if (TextUtils.isEmpty(bankNumber)) {
|
|
// Toast.showError("银行卡号不能为空");
|
|
// return;
|
|
// }
|
|
// //网络请求验证
|
|
// HttpResultModel resultModel = await _presenter.realBinding(
|
|
// UserManager.instance.user.info.id, realName, idCard, bankAddress, bankNumber
|
|
// );
|
|
// //绑定失败
|
|
// if (resultModel.code != HttpStatus.SUCCESS) {
|
|
// Toast.showError(resultModel.msg);
|
|
// return;
|
|
// }else{
|
|
// // Navigator.maybePop<dynamic>(context, true);
|
|
// Navigator.pop(context, true);
|
|
// }
|
|
|
|
// }
|
|
|
|
// }
|