You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
car_customer_app/lib/pages/user/complete_profile_page.dart

217 lines
7.2 KiB
Dart

import 'package:car_customer_app/api/client/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/m_response.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<CompleteProfilePage> createState() => _CompleteProfilePageState();
}
class _CompleteProfilePageState extends State<CompleteProfilePage> {
String? firstName = "", lastName = "", email = "", password = "", confirmPassword = "";
bool isChecked = false;
@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(20),
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,
isButtonEnable: email!.length > 0 ? true : false,
buttonTitle: "Verify",
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<void> 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);
// // 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");
// }
//
// }
Future<void> 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 isEmail(String em) {
String p = r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$';
RegExp regExp = new RegExp(p);
return regExp.hasMatch(em);
}
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 (email!.isNotEmpty) {
if(!isEmail(email!)){
Utils.showToast("Enter Valid Email");
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;
}
}