import 'package:car_customer_app/api/user_api_client.dart'; import 'package:car_customer_app/classes/utils.dart'; import 'package:car_customer_app/config/routes.dart'; import 'package:car_customer_app/models/user/basic_otp.dart'; import 'package:car_customer_app/models/user/register_user.dart'; import 'package:car_customer_app/utils/navigator.dart'; import 'package:car_customer_app/utils/utils.dart'; import 'package:car_customer_app/widgets/app_bar.dart'; import 'package:car_customer_app/widgets/dialog/dialogs.dart'; import 'package:car_customer_app/widgets/dialog/message_dialog.dart'; import 'package:car_customer_app/widgets/dialog/otp_dialog.dart'; import 'package:car_customer_app/widgets/show_fill_button.dart'; import 'package:car_customer_app/extensions/widget_extensions.dart'; import 'package:car_customer_app/extensions/int_extensions.dart'; import 'package:car_customer_app/extensions/string_extensions.dart'; import 'package:car_customer_app/widgets/txt_field.dart'; import 'package:flutter/material.dart'; class CompleteProfilePage extends StatefulWidget { RegisterUser user; CompleteProfilePage(this.user); @override State createState() => _CompleteProfilePageState(); } class _CompleteProfilePageState extends State { bool isChecked = false; String? firstName = "", lastName = "", email = "", password = "", confirmPassword = ""; @override void initState() { // TODO: implement initState super.initState(); } @override Widget build(BuildContext context) { return Scaffold( appBar: appBar(title: "Sign Up"), body: Container( width: double.infinity, height: double.infinity, child: SingleChildScrollView( child: Padding( padding: EdgeInsets.all(40), child: Column( children: [ "Complete Profile".toText24(), 12.height, TxtField( hint: "First Name", value: firstName, onChanged: (v) { firstName = v; }, ), 12.height, TxtField( hint: "Surname", value: lastName, onChanged: (v) { lastName = v; }, ), 12.height, TxtField( hint: "Email", value: email, onChanged: (v) { email = v; }, ), 12.height, TxtField( hint: "Create Password", isPasswordEnabled: true, maxLines: 1, value: password, onChanged: (v) { password = v; }, ), 12.height, TxtField( hint: "Confirm Password", isPasswordEnabled: true, maxLines: 1, value: confirmPassword, onChanged: (v) { confirmPassword = v; }, ), // 12.height, // TxtField( // hint: "Phone Number", // ), 50.height, Row( children: [ buildCheckbox(), "By creating an account you agree to our Terms of Service and\n Privacy Policy".toText12(), ], ), 16.height, ShowFillButton( title: "Continue", width: double.infinity, onPressed: () { if(validation()) performCompleteProfile(); }, ), ], ), ), ), ), ); } Widget buildCheckbox() => Checkbox( value: isChecked, activeColor: Colors.blue, onChanged: (value){ setState(() { isChecked = value!; }); }, ); Future performCompleteProfile() async { if (validateStructure(password ?? "")) { if (password == confirmPassword) { print(widget.user.data!.userId ?? "userId"); Utils.showLoading(context); RegisterUser user = await UserApiClent().basicComplete(widget.user.data?.userId ?? "", firstName!, lastName!, email!, password!); Utils.hideLoading(context); if (user.messageStatus == 1) { Utils.showToast("Successfully Registered, Please login once"); pop(context); // navigateReplaceWithName(context, AppRoutes.dashboard,arguments: user); } else { Utils.showToast(user.message ?? ""); } } else { Utils.showToast("Please enter same password"); } } else { Utils.showToast("Password Should contains Character, Number, Capital and small letters"); } } bool validateStructure(String value){ String pattern = r'^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[!@#\$&*~]).{6,}$'; RegExp regExp = new RegExp(pattern); return regExp.hasMatch(value); } bool validation() { bool isValid = true; if (firstName!.isEmpty) { Utils.showToast("First name is mandatory"); isValid = false; } else if (lastName!.isEmpty) { Utils.showToast("Surname is mandatory"); isValid = false; } else if (password!.isEmpty) { Utils.showToast("Password is mandatory"); isValid = false; }else if (!isChecked) { Utils.showToast("Please accept terms"); isValid = false; } return isValid; } }