fixed issues

fatima
Fatimah Alshammari 4 years ago
parent 0de7d3bcb5
commit 3467d005b1

@ -1,5 +1,9 @@
import 'dart:async';
import 'package:car_provider_app/models/user/change_email.dart';
import 'package:car_provider_app/models/user/change_mobile.dart';
import 'package:car_provider_app/models/user/cities.dart';
import 'package:car_provider_app/models/user/confirm_email.dart';
import 'package:car_provider_app/models/user/confirm_mobile.dart';
import 'package:car_provider_app/models/user/country.dart';
import 'package:car_provider_app/models/user/role.dart';
import 'package:car_provider_app/models/user/confirm_password.dart';
@ -92,10 +96,10 @@ class UserApiClent {
//return await ApiClient().postJsonForObject((json) => PasswordOTPRequest.fromJson(json), ApiConsts.ForgetPasswordOTPRequest, postParams);
}
Future<Response> ForgetPasswordOTPCompare(String userToken, String otp) async {
Future<Response> ForgetPasswordOTPCompare(String userToken, String userOTP) async {
var postParams =
{"userToken": userToken,
"userOTP": otp};
"userOTP": userOTP};
return await ApiClient().postJsonForResponse(ApiConsts.ForgetPasswordOTPCompare, postParams);
// return await ApiClient().postJsonForObject((json) => PasswordOTPCompare.fromJson(json), ApiConsts.ForgetPasswordOTPCompare, postParams);
}
@ -122,4 +126,41 @@ class UserApiClent {
}
Future<ChangeMobile> ChangeMobileNoOTPRequest(countryID, String mobileNo, String password,) async {
var postParams =
{ "countryID":1,
"mobileNo": mobileNo,
"password": password};
String t = AppState().getUser.data!.accessToken ?? "";
return await ApiClient().postJsonForObject((json) => ChangeMobile.fromJson(json), ApiConsts.ChangeMobileNoOTPRequest, postParams, token: t);
}
Future<ConfirmMobile> ChangeMobileNo(String userToken, String userOTP) async {
var postParams = {
"userToken": userToken,
"userOTP": userOTP,
};
String t = AppState().getUser.data!.accessToken ?? "";
return await ApiClient().postJsonForObject((json) => ConfirmMobile.fromJson(json), ApiConsts.ChangeMobileNo, postParams, token: t);
}
Future<ChanEmail> ChangeEmailOTPRequest(String email, String password) async {
var postParams =
{"email": email,
"password":password
};
String t = AppState().getUser.data!.accessToken ?? "";
return await ApiClient().postJsonForObject((json) => ChanEmail.fromJson(json), ApiConsts.ChangeEmailOTPRequest, postParams, token: t);
}
Future<ConfirmEmail> ChangeEmail(String userToken, String userOTP) async {
var postParams =
{"userToken": userToken,
"userOTP": userOTP
};
String t = AppState().getUser.data!.accessToken ?? "";
return await ApiClient().postJsonForObject((json) => ConfirmEmail.fromJson(json), ApiConsts.ChangeEmail, postParams, token: t);
}
}

@ -21,6 +21,10 @@ class ApiConsts {
static String Login_Email_OTP = baseUrlServices + "api/Account/EmailVerify";
static String Login_Email_OTPVerify = baseUrlServices + "api/Account/EmailVerifyOTPVerify";
static String ChangePassword = baseUrlServices + "api/Account/ChangePassword";
static String ChangeMobileNoOTPRequest = baseUrlServices + "api/Account/ChangeMobileNoOTPRequest";
static String ChangeMobileNo = baseUrlServices + "api/Account/ChangeMobileNo";
static String ChangeEmailOTPRequest = baseUrlServices + "api/Account/ChangeEmailOTPRequest";
static String ChangeEmail = baseUrlServices + "api/Account/ChangeEmail";
//Profile
static String GetProviderDocument = baseUrlServices + "api/ServiceProviders/ServiceProviderDocument_Get";
static String ServiceProviderDocument_Update = baseUrlServices + "api/ServiceProviders/ServiceProviderDocument_Update";

@ -4,9 +4,12 @@ import 'package:car_provider_app/pages/settings/create_services_page.dart';
import 'package:car_provider_app/pages/settings/dealership_page.dart';
import 'package:car_provider_app/pages/settings/define_branch_page.dart';
import 'package:car_provider_app/pages/settings/define_license_page.dart';
import 'package:car_provider_app/pages/user/change_email_page.dart';
import 'package:car_provider_app/pages/user/change_mobile_page.dart';
import 'package:car_provider_app/pages/user/change_password_page.dart';
import 'package:car_provider_app/pages/user/complete_profile_page.dart';
import 'package:car_provider_app/pages/user/confirm_new_password_page.dart';
import 'package:car_provider_app/pages/user/forget_password_method_page.dart';
import 'package:car_provider_app/pages/user/forget_password_page.dart';
import 'package:car_provider_app/pages/user/login_method_selection_page.dart';
import 'package:car_provider_app/pages/user/login_verification_page.dart';
@ -39,6 +42,9 @@ class AppRoutes {
static final String confirmNewPasswordPage = "/confirmNewPasswordPage";
static final String defineLicense = "/defineLicese";
static final String changePassword = "/changePassword";
static final String forgetPasswordMethodPage = "/forgetPasswordMethodPage";
static final String changeMobilePage = "/changeMobilePage";
static final String changeEmailPage = "/changeEmailPage";
static final String dashboard = "/dashboard";
@ -67,6 +73,9 @@ class AppRoutes {
vertifyPassword: (context) => VerifyPasswordPage(),
confirmNewPasswordPage: (context) => ConfirmNewPasswordPage(ModalRoute.of(context)!.settings.arguments as String),
changePassword: (context) => ChangePasswordPage(),
forgetPasswordMethodPage: (context) => ForgetPasswordMethodPage(ModalRoute.of(context)!.settings.arguments as String),
changeMobilePage: (context) => ChangeMobilePage(),
changeEmailPage : (context) => ChangeEmailPage(),
//Home page
dashboard: (context) => DashboardPage(),

@ -0,0 +1,51 @@
import 'dart:convert';
ChanEmail changeEmailFromJson(String str) => ChanEmail.fromJson(json.decode(str));
String changeEmailToJson(ChanEmail data) => json.encode(data.toJson());
class ChanEmail {
int? messageStatus;
Null? totalItemsCount;
Data? data;
String? message;
ChanEmail(
{this.messageStatus, this.totalItemsCount, this.data, this.message});
ChanEmail.fromJson(Map<String, dynamic> json) {
messageStatus = json['messageStatus'];
totalItemsCount = json['totalItemsCount'];
data = json['data'] != null ? new Data.fromJson(json['data']) : null;
message = json['message'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['messageStatus'] = this.messageStatus;
data['totalItemsCount'] = this.totalItemsCount;
if (this.data != null) {
data['data'] = this.data!.toJson();
}
data['message'] = this.message;
return data;
}
}
class Data {
String? userToken;
Data({this.userToken});
Data.fromJson(Map<String, dynamic> json) {
userToken = json['userToken'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['userToken'] = this.userToken;
return data;
}
}

@ -0,0 +1,51 @@
import 'dart:convert';
ChangeMobile changeMobileFromJson(String str) => ChangeMobile.fromJson(json.decode(str));
String changeMobileToJson(ChangeMobile data) => json.encode(data.toJson());
class ChangeMobile {
int? messageStatus;
Null? totalItemsCount;
Data? data;
String? message;
ChangeMobile(
{this.messageStatus, this.totalItemsCount, this.data, this.message});
ChangeMobile.fromJson(Map<String, dynamic> json) {
messageStatus = json['messageStatus'];
totalItemsCount = json['totalItemsCount'];
data = json['data'] != null ? new Data.fromJson(json['data']) : null;
message = json['message'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['messageStatus'] = this.messageStatus;
data['totalItemsCount'] = this.totalItemsCount;
if (this.data != null) {
data['data'] = this.data!.toJson();
}
data['message'] = this.message;
return data;
}
}
class Data {
String? userToken;
Data({this.userToken});
Data.fromJson(Map<String, dynamic> json) {
userToken = json['userToken'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['userToken'] = this.userToken;
return data;
}
}

@ -0,0 +1,51 @@
import 'dart:convert';
ConfirmEmail confirmEmailFromJson(String str) => ConfirmEmail.fromJson(json.decode(str));
String confirmEmailToJson(ConfirmEmail data) => json.encode(data.toJson());
class ConfirmEmail {
int? messageStatus;
Null? totalItemsCount;
Data? data;
String? message;
ConfirmEmail(
{this.messageStatus, this.totalItemsCount, this.data, this.message});
ConfirmEmail.fromJson(Map<String, dynamic> json) {
messageStatus = json['messageStatus'];
totalItemsCount = json['totalItemsCount'];
data = json['data'] != null ? new Data.fromJson(json['data']) : null;
message = json['message'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['messageStatus'] = this.messageStatus;
data['totalItemsCount'] = this.totalItemsCount;
if (this.data != null) {
data['data'] = this.data!.toJson();
}
data['message'] = this.message;
return data;
}
}
class Data {
String? userID;
Data({this.userID});
Data.fromJson(Map<String, dynamic> json) {
userID = json['userID'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['userID'] = this.userID;
return data;
}
}

@ -0,0 +1,53 @@
import 'dart:convert';
ConfirmMobile confirmMobileFromJson(String str) => ConfirmMobile.fromJson(json.decode(str));
String confirmMobileToJson(ConfirmMobile data) => json.encode(data.toJson());
class ConfirmMobile {
int? messageStatus;
Null? totalItemsCount;
Data? data;
String? message;
ConfirmMobile(
{this.messageStatus, this.totalItemsCount, this.data, this.message});
ConfirmMobile.fromJson(Map<String, dynamic> json) {
messageStatus = json['messageStatus'];
totalItemsCount = json['totalItemsCount'];
data = json['data'] != null ? new Data.fromJson(json['data']) : null;
message = json['message'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['messageStatus'] = this.messageStatus;
data['totalItemsCount'] = this.totalItemsCount;
if (this.data != null) {
data['data'] = this.data!.toJson();
}
data['message'] = this.message;
return data;
}
}
class Data {
String? userID;
Data({this.userID});
Data.fromJson(Map<String, dynamic> json) {
userID = json['userID'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['userID'] = this.userID;
return data;
}
}

@ -167,6 +167,16 @@ class _DashboardPageState extends State<DashboardPage> {
ListTile(
leading: SvgPicture.asset("assets/images/ic_mobile.svg"),
title: "Change Mobile".toText12(),
onTap: () {
navigateWithName(context, AppRoutes.changeMobilePage);
},
),
ListTile(
leading: Icon(Icons.email_outlined, color: Colors.blue,),
title: "Change Email".toText12(),
onTap: () {
navigateWithName(context, AppRoutes.changeEmailPage);
},
),
ListTile(
leading: SvgPicture.asset("assets/images/ic_logout.svg"),

@ -0,0 +1,116 @@
import 'package:car_provider_app/api/client/user_api_client.dart';
import 'package:car_provider_app/classes/utils.dart';
import 'package:car_provider_app/config/routes.dart';
import 'package:car_provider_app/extensions/int_extensions.dart';
import 'package:car_provider_app/extensions/string_extensions.dart';
import 'package:car_provider_app/models/user/change_email.dart';
import 'package:car_provider_app/models/user/confirm_email.dart';
import 'package:car_provider_app/utils/navigator.dart';
import 'package:car_provider_app/widgets/app_bar.dart';
import 'package:car_provider_app/widgets/dialog/dialogs.dart';
import 'package:car_provider_app/widgets/dialog/message_dialog.dart';
import 'package:car_provider_app/widgets/dialog/otp_dialog.dart';
import 'package:car_provider_app/widgets/show_fill_button.dart';
import 'package:flutter/material.dart';
import 'dart:convert';
import 'package:http/http.dart';
class ChangeEmailPage extends StatefulWidget {
@override
State<ChangeEmailPage> createState() => _ChangeEmailPageState();
}
class _ChangeEmailPageState extends State<ChangeEmailPage> {
String password = "";
String email = '';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: appBar(title: "Change Email"),
body: SingleChildScrollView(
child: Container(
// width: double.infinity,
// height: double.infinity,
padding: EdgeInsets.all(40),
child: Column(
children: [
"Enter Email".toText24(),
12.height,
TextFormField(
decoration: InputDecoration(
hintText: "Enter New Email",
hintStyle: TextStyle(color: Colors.grey),
border: OutlineInputBorder(
borderRadius: const BorderRadius.all(
const Radius.circular(5.0),
),
),
),
obscureText: false,
onChanged: (v) => email = v,
),
12.height,
TextFormField(
decoration: InputDecoration(
hintText: "Enter Current Password",
hintStyle: TextStyle(color: Colors.grey),
border: OutlineInputBorder(
borderRadius: const BorderRadius.all(
const Radius.circular(5.0),
),
),
),
obscureText: true,
onChanged: (v) => password = v,
),
40.height,
ShowFillButton(
title: "Confirm",
width: double.infinity,
onPressed: () {
changeEmail(context);
},
),
],
),
),
),
);
}
Future<void> changeEmail(BuildContext context) async {
Utils.showLoading(context);
ChanEmail otpRequest = await UserApiClent().ChangeEmailOTPRequest(email, password);
Utils.hideLoading(context);
if (otpRequest.messageStatus == 1) {
showMDialog(context, child: OtpDialog(
onClick: (String code) async {
pop(context);
Utils.showLoading(context);
ConfirmEmail otpCompare = await UserApiClent().ChangeEmail(otpRequest.data!.userToken ?? "", code);
Utils.hideLoading(context);
if (otpCompare.messageStatus == 1) {
showMDialog(
context,
child: MessageDialog(
title: "Email Verified",
onClick: () {
Navigator.of(context).pushNamedAndRemoveUntil(AppRoutes.loginWithPassword, (Route<dynamic> route) => false);
},
),
);
} else {
Utils.showToast(otpCompare.message ?? "");
}
},
));
} else {
Utils.showToast(otpRequest.message ?? "");
}
}
}

@ -0,0 +1,119 @@
import 'package:car_provider_app/api/client/user_api_client.dart';
import 'package:car_provider_app/classes/utils.dart';
import 'package:car_provider_app/config/routes.dart';
import 'package:car_provider_app/extensions/int_extensions.dart';
import 'package:car_provider_app/extensions/string_extensions.dart';
import 'package:car_provider_app/models/user/change_mobile.dart';
import 'package:car_provider_app/models/user/confirm_mobile.dart';
import 'package:car_provider_app/utils/navigator.dart';
import 'package:car_provider_app/widgets/app_bar.dart';
import 'package:car_provider_app/widgets/dialog/dialogs.dart';
import 'package:car_provider_app/widgets/dialog/message_dialog.dart';
import 'package:car_provider_app/widgets/dialog/otp_dialog.dart';
import 'package:car_provider_app/widgets/show_fill_button.dart';
import 'package:flutter/material.dart';
import 'dart:convert';
import 'package:http/http.dart';
class ChangeMobilePage extends StatefulWidget {
@override
State<ChangeMobilePage> createState() => _ChangeMobilePageState();
}
class _ChangeMobilePageState extends State<ChangeMobilePage> {
int countryID=1 ;
String mobileNo = '';
String password = '';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: appBar(title: "Change Mobile Number"),
body: SingleChildScrollView(
child: Container(
// width: double.infinity,
// height: double.infinity,
padding: EdgeInsets.all(40),
child: Column(
children: [
"Enter New Phone Number".toText24(),
12.height,
TextFormField(
decoration: InputDecoration(
hintText: "Enter New Phone Number",
hintStyle: TextStyle(color: Colors.grey),
border: OutlineInputBorder(
borderRadius: const BorderRadius.all(
const Radius.circular(5.0),
),
),
),
obscureText: false,
onChanged: (v) => mobileNo = v,
),
12.height,
TextFormField(
decoration: InputDecoration(
hintText: "Enter Current Password",
hintStyle: TextStyle(color: Colors.grey),
border: OutlineInputBorder(
borderRadius: const BorderRadius.all(
const Radius.circular(5.0),
),
),
),
obscureText: true,
onChanged: (v) => password = v,
),
40.height,
ShowFillButton(
title: "Confirm",
width: double.infinity,
onPressed: () {
changeMobile(context);
},
),
],
),
),
),
);
}
Future<void> changeMobile(BuildContext context) async {
Utils.showLoading(context);
ChangeMobile otpRequest = await UserApiClent().ChangeMobileNoOTPRequest(countryID, mobileNo, password);
Utils.hideLoading(context);
if (otpRequest.messageStatus == 1) {
showMDialog(context, child: OtpDialog(
onClick: (String code) async {
pop(context);
Utils.showLoading(context);
ConfirmMobile otpCompare = await UserApiClent().ChangeMobileNo(otpRequest.data!.userToken ?? "", code);
Utils.hideLoading(context);
if (otpCompare.messageStatus == 1) {
showMDialog(
context,
child: MessageDialog(
title: "Phone Number Verified",
onClick: () {
Navigator.of(context).pushNamedAndRemoveUntil(AppRoutes.loginWithPassword, (Route<dynamic> route) => false);
},
),
);
} else {
Utils.showToast(otpCompare.message ?? "");
}
},
));
} else {
Utils.showToast(otpRequest.message ?? "");
}
}
}

@ -42,7 +42,7 @@ class _ChangePasswordPageState extends State<ChangePasswordPage> {
padding: EdgeInsets.all(40),
child: Column(
children: [
"Inter New Phone Number".toText24(),
"Enter New Password".toText24(),
12.height,
TextFormField(
decoration: InputDecoration(
@ -60,7 +60,7 @@ class _ChangePasswordPageState extends State<ChangePasswordPage> {
12.height,
TextFormField(
decoration: InputDecoration(
hintText: "Inter New Password",
hintText: "Enter New Password",
hintStyle: TextStyle(color: Colors.grey),
border: OutlineInputBorder(
borderRadius: const BorderRadius.all(

@ -0,0 +1,95 @@
import 'dart:convert';
import 'package:car_provider_app/api/client/user_api_client.dart';
import 'package:car_provider_app/classes/utils.dart';
import 'package:car_provider_app/config/constants.dart';
import 'package:car_provider_app/config/routes.dart';
import 'package:car_provider_app/extensions/int_extensions.dart';
import 'package:car_provider_app/extensions/string_extensions.dart';
import 'package:car_provider_app/models/user/forget_password_otp_compare.dart';
import 'package:car_provider_app/utils/navigator.dart';
import 'package:car_provider_app/utils/utils.dart';
import 'package:car_provider_app/widgets/app_bar.dart';
import 'package:car_provider_app/widgets/button/show_image_button.dart';
import 'package:car_provider_app/widgets/dialog/dialogs.dart';
import 'package:car_provider_app/widgets/dialog/otp_dialog.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart';
class ForgetPasswordMethodPage extends StatefulWidget {
String userToken;
ForgetPasswordMethodPage(this.userToken);
@override
State<ForgetPasswordMethodPage> createState() => _ForgetPasswordMethodPageState();
}
class _ForgetPasswordMethodPageState extends State<ForgetPasswordMethodPage> {
int otpType = 1;
String userOTP = "";
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: appBar(title: "Forget Password"),
body: Container(
width: double.infinity,
height: double.infinity,
padding: EdgeInsets.all(40),
child: Column(
children: [
"Select Method".toText24(),
12.height,
Row(
children: [
Expanded(
child: ShowImageButton(
onClick: () {
otpType = 1;
forgetPasswordOTPMethod(context);
},
title: 'With SMS',
icon: icons + "ic_sms.png",
),
),
20.width,
Expanded(
child: ShowImageButton(
onClick: () {
otpType = 1;
forgetPasswordOTPMethod(context);
},
title: 'With Whatsapp',
icon: icons + "ic_whatsapp.png",
),
),
],
),
mFlex(10),
],
),
),
);
}
Future<void> forgetPasswordOTPMethod(BuildContext context) async {
showMDialog(context, child: OtpDialog(
onClick: (String code) async {
pop(context);
Utils.showLoading(context);
Response res = await UserApiClent().ForgetPasswordOTPCompare(widget.userToken?? "", code);
Utils.hideLoading(context);
PasswordOTPCompare otpCompare = PasswordOTPCompare.fromJson(jsonDecode(res.body));
if (otpCompare.messageStatus == 1) {
var userToken = otpCompare.data!.userToken;
navigateWithName(context, AppRoutes.confirmNewPasswordPage, arguments: userToken);
} else {
Utils.showToast(otpCompare.message ?? "");
}
},
));
}
}

@ -25,9 +25,18 @@ import 'package:car_provider_app/models/user/user.dart';
import 'dart:convert';
import 'package:http/http.dart';
class ForgetPasswordPage extends StatelessWidget {
class ForgetPasswordPage extends StatefulWidget {
@override
State<ForgetPasswordPage> createState() => _ForgetPasswordPageState();
}
class _ForgetPasswordPageState extends State<ForgetPasswordPage> {
int otpType = 1;
String userName = "";
bool _email = true;
bool _mobile = true;
@override
Widget build(BuildContext context) {
@ -41,74 +50,63 @@ class ForgetPasswordPage extends StatelessWidget {
children: [
"Verify New Password".toText24(),
mFlex(1),
TxtField(
hint: "Phone Number",
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
RaisedButton(
onPressed: () {
setState(() {
_mobile = true;
_email = false;
});
},child:
Text("Mobile Number",
style: TextStyle(fontSize: 14,
fontWeight: FontWeight.w600,),
),color: _mobile ? Colors.blue : Colors.transparent,textColor: _mobile ? Colors.white : Colors.blue,
padding: EdgeInsets.symmetric(horizontal: 18, vertical: 12),),
RaisedButton(onPressed: () {
setState(() {
_mobile = false;
_email = true;
});
},child:
Text("Email Address",
style: TextStyle(fontSize: 14,
fontWeight: FontWeight.w600,),),color: _email? Colors.blue : Colors.transparent
,textColor: _email ? Colors.white : Colors.blue,
padding: EdgeInsets.symmetric(horizontal: 18, vertical: 12),),
],
),
50.height,
"Retrieve Password".toText24(),
12.height,
_mobile ? TxtField(
hint: "Phone Number" ,
value: userName,
onChanged: (v) {
userName = v;
},
),
mFlex(2),
Row(
children: [
Expanded(
child: ShowImageButton(
onClick: () {
otpType = 1;
forgetPasswordOTP(context);
// showMDialog(context, child: OtpDialog(
// onClick: (String code) {
// pop(context);
// delay(300).then(
// (value) => showMDialog(
// context,
// child: MessageDialog(
// title: "Phone Number Verified",
// onClick: () {
// otpType=1;
// navigateWithName(context, AppRoutes.confirmNewPasswordPage);
// // ForgetPasswordOTP(context);
// },
// ),
// ),
// );
// },
// ));
},
title: 'With SMS',
icon: icons + "ic_sms.png",
),
),
20.width,
Expanded(
child: ShowImageButton(
onClick: () {
otpType = 1;
forgetPasswordOTP(context);
// showMDialog(context, child: OtpDialog(
// onClick: (String code) {
// pop(context);
// delay(300).then(
// (value) => showMDialog(
// context,
// child: MessageDialog(
// title: "Phone Number Verified",
// onClick: () {
// otpType=2;
// navigateWithName(context, AppRoutes.confirmNewPasswordPage);
// // ForgetPasswordOTP(context);
// },
// ),
// ),
// );
// },
// ));
},
title: 'With Whatsapp',
icon: icons + "ic_whatsapp.png",
),
),
],
):
_email ? TxtField(
hint: "Email Address",
value: userName,
onChanged: (v) {
userName = v;
},
): Container(),
50.height,
ShowFillButton(
title: "Continue",
width: double.infinity,
onPressed: () {
if(userName.isNum()) {
forgetPasswordPhoneOTP(context);
}else{
forgetPasswordEmailOTP(context);
}
},
),
mFlex(10),
],
@ -117,50 +115,45 @@ class ForgetPasswordPage extends StatelessWidget {
);
}
Future<void> forgetPasswordOTP(BuildContext context) async {
Future<void> forgetPasswordPhoneOTP(BuildContext context) async {
Utils.showLoading(context);
Response response = await UserApiClent().ForgetPasswordOTPRequest(userName, otpType);
Utils.hideLoading(context);
PasswordOTPRequest otpRequest = PasswordOTPRequest.fromJson(jsonDecode(response.body));
if (otpRequest.messageStatus == 1) {
showMDialog(context, child: OtpDialog(
onClick: (String code) async {
pop(context);
Utils.showLoading(context);
Response res = await UserApiClent().ForgetPasswordOTPCompare(otpRequest.data!.userToken ?? "", code);
Utils.hideLoading(context);
PasswordOTPCompare otpCompare = PasswordOTPCompare.fromJson(jsonDecode(res.body));
if (otpCompare.messageStatus == 1) {
var userToken = otpCompare.data!.userToken;
print("token is ________");
print(userToken);
navigateWithName(context, AppRoutes.confirmNewPasswordPage, arguments: userToken);
} else {
Utils.showToast(otpCompare.message ?? "");
}
},
));
// showMDialog(context, child: OtpDialog(
// onClick: (String code) {
// pop(context);
// delay(300).then(
// (value) => showMDialog(
// context,
// child: MessageDialog(
// title: "Phone Number Verified",
// onClick: () {
// otpType=1;
// navigateWithName(context, AppRoutes.confirmNewPasswordPage);
// // ForgetPasswordOTP(context);
// },
// ),
// ),
// );
// },
// ));
// navigateWithName(context, AppRoutes.vertifyPassword);
var userToken = otpRequest.data!.userToken;
navigateReplaceWithName(context, AppRoutes.forgetPasswordMethodPage, arguments: userToken);
} else {
Utils.showToast(otpRequest.message ?? "");
}
}
Future<void> forgetPasswordEmailOTP(BuildContext context) async {
Utils.showLoading(context);
Response response = await UserApiClent().ForgetPasswordOTPRequest(userName, otpType);
Utils.hideLoading(context);
PasswordOTPRequest otpRequest = PasswordOTPRequest.fromJson(jsonDecode(response.body));
if (otpRequest.messageStatus == 1) {
Utils.showToast("Code is sent to email");
showMDialog(context, child: OtpDialog(
onClick: (String code) async {
pop(context);
Utils.showLoading(context);
Response res = await UserApiClent().ForgetPasswordOTPCompare(otpRequest.data!.userToken ?? "", code);
Utils.hideLoading(context);
PasswordOTPCompare otpCompare = PasswordOTPCompare.fromJson(jsonDecode(res.body));
if (otpCompare.messageStatus == 1) {
var userToken = otpCompare.data!.userToken;
print("token is ________");
print(userToken);
navigateWithName(context, AppRoutes.confirmNewPasswordPage, arguments: userToken);
} else {
Utils.showToast(otpCompare.message ?? "");
}
},
));
} else {
Utils.showToast(otpRequest.message ?? "");
}
}
}

@ -23,9 +23,18 @@ import 'package:car_provider_app/widgets/txt_field.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart';
class LoginWithPassword extends StatelessWidget {
class LoginWithPassword extends StatefulWidget {
@override
State<LoginWithPassword> createState() => _LoginWithPasswordState();
}
class _LoginWithPasswordState extends State<LoginWithPassword> {
int otpType = 1;
bool _email = true;
bool _mobile = true;
String phoneNum = "", password = "";
String email = "";
@override
@ -38,25 +47,69 @@ class LoginWithPassword extends StatelessWidget {
padding: EdgeInsets.all(40),
child: Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
RaisedButton(
onPressed: () {
setState(() {
_mobile = true;
_email = false;
});
},child:
Text("Mobile Number",
style: TextStyle(fontSize: 14,
fontWeight: FontWeight.w600,),
),color: _mobile ? Colors.blue : Colors.transparent,textColor: _mobile ? Colors.white : Colors.blue,
padding: EdgeInsets.symmetric(horizontal: 18, vertical: 12),),
RaisedButton(onPressed: () {
setState(() {
_mobile = false;
_email = true;
});
},child:
Text("Email Address",
style: TextStyle(fontSize: 14,
fontWeight: FontWeight.w600,),),color: _email? Colors.blue : Colors.transparent
,textColor: _email ? Colors.white : Colors.blue,
padding: EdgeInsets.symmetric(horizontal: 18, vertical: 12),),
],
),
50.height,
"Enter Mobile or Email".toText24(),
mFlex(1),
_mobile ? Column(
children: [
TxtField(
hint: "Enter phone number",
value: phoneNum,
onChanged: (v) {
phoneNum = v;
},
),
12.height,
TxtField(
hint: "Enter Password",
value: password,
isPasswordEnabled: true,
maxLines: 1,
onChanged: (v) {
password = v;
},
),
],
): _email ?
TxtField(
hint: "Enter phone number or email",
value: phoneNum,
onChanged: (v) {
phoneNum = v;
},
),
12.height,
TxtField(
hint: "Enter Password",
hint: "Enter Email",
value: password,
isPasswordEnabled: true,
maxLines: 1,
onChanged: (v) {
password = v;
},
),
)
:Container(),
10.height,
Row(
mainAxisAlignment: MainAxisAlignment.end,
@ -98,6 +151,4 @@ class LoginWithPassword extends StatelessWidget {
Future<void> performBasicOtpEmail(BuildContext context) async {
}
}

Loading…
Cancel
Save