fix issues and translation

fatima
Fatimah Alshammari 4 years ago
parent e8d9334918
commit 8058231f43

@ -1,5 +1,6 @@
import 'package:car_customer_app/models/post_params_model.dart';
import 'package:car_customer_app/models/user/user.dart'; import 'package:car_customer_app/models/user/user.dart';
class AppState { class AppState {
@ -20,4 +21,13 @@ class AppState {
set setUser(v) => _user = v; set setUser(v) => _user = v;
User get getUser => _user??User(); User get getUser => _user??User();
PostParamsModel? _postParams;
PostParamsModel? get postParamsObject => _postParams;
Map<String, dynamic> get postParamsJson => _postParams?.toJson() ?? {};
void setPostParamsModel(PostParamsModel _postParams) {
this._postParams = _postParams;
}
} }

@ -14,7 +14,73 @@ class CodegenLoader extends AssetLoader{
return Future.value(mapLocales[locale.toString()]); return Future.value(mapLocales[locale.toString()]);
} }
static const Map<String,dynamic> en = { static const Map<String,dynamic> ar_SA = {
"firstTimeLogIn": "تسجيل الدخول لأول مره",
"signUp": "تسجيل دخول",
"changeMobile": "تغيير رقم الجوال",
"notifications": "الاشعارات",
"general": "عام",
"defineLicences": "تحديد الرخص",
"dealershipSettings": "اعدادات البيع",
"changePassword": "تغيير كلمة المرور",
"retrievePassword": "استرجاع كلمة المرور",
"changeEmail": "تغيير الايميل",
"verify": "تحقق",
"signOut": "تسجيل خروج",
"enterEmail": "ادخل الايميل",
"enterNewEmail": "ادخل ايميل جديد",
"enterCurrentPassword": "كلمة المرور الحاليه",
"enterNewPassword": "كلمة المرور الجديده",
"enterOldPassword": "كلمة المرور القديمه",
"confirm": "تأكيد",
"enterNewPhoneNumber": "رقم جوال جديد",
"completeProfile": "الملف الشخصي",
"continu": "استمرار",
"confirmPassword": "تأكيد كلمة المرور",
"createPassword": "انشاء كلمة مرور جديده",
"email": "ايميل",
"firstName": "الأسم الأول *",
"surname": "اسم العائله *",
"confirmPass": "تأكيد كلمة المرور *",
"createPass": "انشاء كلمة مرور جديده *",
"newPassword": " كلمة مرور جديده",
"forgetPassword": "نسيت كلمة المرور",
"editAccount": "تعديل الحساب",
"change": "تغيير",
"verifyAccount": "التحقق من الحساب",
"login": "تسجيل دخول",
"welcomeMessage": "مرحبا",
"forgetPass": "نسيت كلمة المرور ؟",
"enterPhoneNumber": "رقم جوال ",
"phoneNumberVerified": "تم التحقق من الجوال",
"verifyNewPassword": "التحقق من كلمة المرور",
"EnterPass": "ادخل كلمة المرور",
"alreadySigned": " تم تسجيل الدخول",
"emailChangedSuccessfully": "تم تغيير الايميل بنجاح",
"passwordIsUpdated": "تم تحجيث كلمة المرور",
"passwordShouldContains": "كلمة المرور يجب ان تحتوي على رمز رقم حرف كبير حرف صغير",
" successfullyRegistered": "تم التسجيل بنجاح",
"pleaseEnterSamePassword": "ادخل كلمة مرور مطابقه",
"firstNameMandatory": "ادخل الأسم الأول ",
"surnameNameMandatory": "ادخل اسم العائله",
"passwordNameMandatory": "ادخل كلمة المرور",
"enterValidEmail": "ادخل ايميل صحيح",
"pleaseAcceptTerms": "يجب الموافقه على الشروط",
"emailVerified": "تم التحقق من الايميل بنجاح",
"selectMethod": "اختر",
"emailAddress": "ايميل",
"loginSelection": "اختر",
"selectCountryCode": "اختر رمز الدوله",
"selectProviderRole": "اختر نوع الخدمه",
"addPhoneNo": "اضف الهاتف",
"onlyCustomerApp": "نأسف هذا التطبيق فقط للعملاء",
"imageUploaded": "تم تحميل الصوره",
"fileLarger": "1KB حجم الملف اكبر من",
"account": "الحساب",
"edit": "تعديل",
"imageDeleted": "تم حذف الصوره",
"dashboard": "الصفحه الرئيسيه",
"termsOfService": "من خلال إنشاء حساب فإنك توافق على شروط الخدمة و\n سياسة الخصوصية",
"title": "Hello", "title": "Hello",
"msg": "Hello {} in the {} world ", "msg": "Hello {} in the {} world ",
"msg_named": "{} are written in the {lang} language", "msg_named": "{} are written in the {lang} language",
@ -53,6 +119,72 @@ class CodegenLoader extends AssetLoader{
"reset_locale": "Reset Language" "reset_locale": "Reset Language"
}; };
static const Map<String,dynamic> en_US = { static const Map<String,dynamic> en_US = {
"firstTimeLogIn": "First Time Log In",
"signUp": "Sing Up",
"changeMobile": "Change Mobile",
"notifications": "Notifications",
"general": "General",
"defineLicences": "Define Licences",
"dealershipSettings": "Dealership Settings",
"changePassword": "Change Password",
"retrievePassword": "Retrieve Password",
"changeEmail": "Change Email",
"verify": "Verify",
"signOut": "Sign Out",
"enterEmail": "Enter Email",
"enterNewEmail": "Enter New Email",
"enterNewPassword": "Enter New Password",
"enterCurrentPassword": "Enter Current Password",
"enterOldPassword": "Enter Old Password",
"confirm": "Confirm",
"completeProfile": "Complete Profile",
"enterNewPhoneNumber": "Enter New Phone Number",
"enterPhoneNumber": "Enter Phone Number",
"continu": "Continue",
"confirmPassword": "Confirm Password",
"createPassword": "Create Password",
"email": "Email",
"firstName": "First Name *",
"surname": "Surname *",
"confirmPass": "Confirm Password *",
"createPass": "Create Password *",
"newPassword": "New Password",
"forgetPassword": "Forget Password",
"editAccount": "Edit Account",
"change": "Change",
"verifyAccount": "Verify Account",
"login": "Log In",
"welcomeMessage": "Welcome Message",
"forgetPass": "Forget Password ?",
"phoneNumberVerified": "Phone Number Verified",
"verifyNewPassword": "Verify New Password",
"EnterPass": "Enter Password ?",
"alreadySigned": " Already Signed Up and Logged In",
"emailChangedSuccessfully": "Email is Changed Successfully",
"passwordIsUpdated": "Password is Updated",
"passwordShouldContains": "Password Should contains Character, Number, Capital and small letters,",
" successfullyRegistered": " Successfully Registered, Please login once,",
"pleaseEnterSamePassword": "Please enter same password",
"firstNameMandatory": "First name is mandatory",
"surnameNameMandatory": "Surname is mandatory",
"passwordNameMandatory": "Password is mandatory",
"enterValidEmail": "Enter Valid Email",
"pleaseAcceptTerms": "Please accept terms",
"emailVerified": "Email is verified successfully",
"selectMethod": "Select Method",
"emailAddress": "Email Address",
"loginSelection": "Login Selection",
"selectCountryCode": "Please select Country Code",
"selectProviderRole": "Please select Provider Role",
"addPhoneNo": "Please add Phone No",
"onlyCustomerApp": "Sorry, Only Customer's can log in this app",
"imageUploaded": "Image is uploaded",
"fileLarger": "File is larger then 1KB",
"account": "Account",
"edit": "EDIT",
"imageDeleted": "Image is Deleted",
"dashboard": "Dashboard/Main Page",
"termsOfService": "By creating an account you agree to our Terms of Service and\n Privacy Policy",
"title": "Hello", "title": "Hello",
"msg": "Hello {} in the {} world ", "msg": "Hello {} in the {} world ",
"msg_named": "{} are written in the {lang} language", "msg_named": "{} are written in the {lang} language",
@ -90,5 +222,5 @@ static const Map<String,dynamic> en_US = {
}, },
"reset_locale": "Reset Language" "reset_locale": "Reset Language"
}; };
static const Map<String, Map<String,dynamic>> mapLocales = {"en": en, "en_US": en_US}; static const Map<String, Map<String,dynamic>> mapLocales = {"ar_SA": ar_SA, "en_US": en_US};
} }

@ -1,4 +1,6 @@
import 'package:car_customer_app/classes/app_state.dart';
import 'package:car_customer_app/config/app_provider.dart'; import 'package:car_customer_app/config/app_provider.dart';
import 'package:car_customer_app/models/post_params_model.dart';
import 'package:car_customer_app/theme/app_theme.dart'; import 'package:car_customer_app/theme/app_theme.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
@ -15,24 +17,35 @@ Future<void> main() async {
runApp( runApp(
EasyLocalization( EasyLocalization(
supportedLocales: [ supportedLocales: [
Locale('en', 'US'), Locale('ar', 'SA'),
Locale('en', 'US')
], ],
fallbackLocale: Locale('ar', 'SA'),
path: 'resources/langs', path: 'resources/langs',
child: MyApp(), child: MyApp(),
), ),
); );
} }
class MyApp extends StatelessWidget { // todo terminal command to genertate translation files
// flutter pub run easy_localization:generate --source-dir ./resources/langs
// todo terminal command to genertate translation keys
// flutter pub run easy_localization:generate --source-dir ./resources/langs -f keys -o locale_keys.g.dart
// command to generate languages data from json
class MyApp extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return AppProvider( return AppProvider(
child: Sizer( child: Sizer(
builder: (context, orientation, deviceType) { builder: (context, orientation, deviceType) {
AppState().setPostParamsModel(
PostParamsModel(languageID: EasyLocalization.of(context)?.locale.languageCode == "ar" ? 1 : 2,),
);
return MaterialApp( return MaterialApp(
theme: AppTheme.getTheme(), theme: AppTheme.getTheme(EasyLocalization.of(context)?.locale.languageCode == "ar"),
debugShowCheckedModeBanner: false, debugShowCheckedModeBanner: false,
localizationsDelegates: context.localizationDelegates, localizationsDelegates: context.localizationDelegates,
supportedLocales: context.supportedLocales, supportedLocales: context.supportedLocales,

@ -0,0 +1,35 @@
class PostParamsModel {
double? versionID;
int? channel;
int? languageID;
String? mobileType;
String? logInTokenID;
String? tokenID;
PostParamsModel({this.versionID, this.channel, this.languageID, this.mobileType, this.logInTokenID, this.tokenID});
PostParamsModel.fromJson(Map<String, dynamic> json) {
versionID = json['VersionID'];
channel = json['Channel'];
languageID = json['LanguageID'];
mobileType = json['MobileType'];
logInTokenID = json['LogInTokenID'];
tokenID = json['TokenID'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['VersionID'] = this.versionID;
data['Channel'] = this.channel;
data['LanguageID'] = this.languageID;
data['MobileType'] = this.mobileType;
data['LogInTokenID'] = this.logInTokenID;
data['TokenID'] = this.tokenID;
return data;
}
set setLogInTokenID(String? token) => logInTokenID = token;
set setTokenID(String? token) => tokenID = token;
}

@ -1,4 +1,5 @@
import 'package:car_customer_app/api/shared_prefrence.dart'; import 'package:car_customer_app/api/shared_prefrence.dart';
import 'package:car_customer_app/generated/locale_keys.g.dart';
import 'package:car_customer_app/theme/colors.dart'; import 'package:car_customer_app/theme/colors.dart';
import 'package:car_customer_app/utils/navigator.dart'; import 'package:car_customer_app/utils/navigator.dart';
import 'package:car_customer_app/widgets/app_bar.dart'; import 'package:car_customer_app/widgets/app_bar.dart';
@ -6,6 +7,7 @@ import 'package:car_customer_app/widgets/show_fill_button.dart';
import 'package:car_customer_app/extensions/int_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/extensions/string_extensions.dart';
import 'package:car_customer_app/extensions/widget_extensions.dart'; import 'package:car_customer_app/extensions/widget_extensions.dart';
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../../api/client/user_api_client.dart'; import '../../api/client/user_api_client.dart';
@ -57,7 +59,7 @@ class _DashboardPageState extends State<DashboardPage> {
drawer: showDrawer(context), drawer: showDrawer(context),
body: Container( body: Container(
child: Center( child: Center(
child: "Dashboard/Main Page".toText24(), child: LocaleKeys.dashboard.tr().toText24(),
), ),
), ),
); );
@ -114,7 +116,8 @@ class _DashboardPageState extends State<DashboardPage> {
Utils.showLoading(context); Utils.showLoading(context);
ImageResponse response = await UserApiClent().UpdateUserImage(""); ImageResponse response = await UserApiClent().UpdateUserImage("");
if (response.messageStatus == 1) { if (response.messageStatus == 1) {
Utils.showToast("Image is Deleted"); Utils.showToast( LocaleKeys.imageDeleted.tr());
//("Image is Deleted");
setState(() { setState(() {
AppState().getUser.data!.userInfo!.userImageUrl = response.data; AppState().getUser.data!.userInfo!.userImageUrl = response.data;
}); });
@ -145,7 +148,7 @@ class _DashboardPageState extends State<DashboardPage> {
), ),
), ),
ShowFillButton( ShowFillButton(
title: "EDIT", title:LocaleKeys.edit.tr(),
onPressed: () { onPressed: () {
navigateWithName(context, AppRoutes.editAccoundPage); navigateWithName(context, AppRoutes.editAccoundPage);
}, },
@ -155,19 +158,19 @@ class _DashboardPageState extends State<DashboardPage> {
), ),
ListTile( ListTile(
leading: Icon(Icons.notifications), leading: Icon(Icons.notifications),
title: "Notifications".toText12(), title: LocaleKeys.notifications.tr().toText12(),
), ),
ListTile( ListTile(
leading: Icon(Icons.settings), leading: Icon(Icons.settings),
title: "General".toText12(), title: LocaleKeys.general.tr().toText12(),
), ),
ListTile( ListTile(
leading: Icon(Icons.person), leading: Icon(Icons.person),
title: "Account".toText12(), title: LocaleKeys.account.tr().toText12(),
), ),
ListTile( ListTile(
leading: Icon(Icons.logout), leading: Icon(Icons.logout),
title: "Sign Out".toText12(), title: LocaleKeys.signOut.tr().toText12(),
onTap: () { onTap: () {
pop(context); pop(context);
pop(context); pop(context);
@ -204,7 +207,8 @@ class _DashboardPageState extends State<DashboardPage> {
int sizeInBytes = pickedImageFile.lengthSync(); int sizeInBytes = pickedImageFile.lengthSync();
// double sizeInMb = sizeInBytes / (1024 * 1024); // double sizeInMb = sizeInBytes / (1024 * 1024);
if (sizeInBytes > 1000) { if (sizeInBytes > 1000) {
Utils.showToast("File is larger then 1KB"); Utils.showToast(LocaleKeys.fileLarger.tr());
//("File is larger then 1KB");
} else { } else {
image64 = convertFileToBase64(pickedImageFile); image64 = convertFileToBase64(pickedImageFile);
@ -213,7 +217,8 @@ class _DashboardPageState extends State<DashboardPage> {
Utils.hideLoading(context); Utils.hideLoading(context);
Navigator.pop(context); Navigator.pop(context);
if (response.messageStatus == 1) { if (response.messageStatus == 1) {
Utils.showToast("Image is uploaded"); Utils.showToast(LocaleKeys.imageUploaded.tr());
//("Image is uploaded");
AppState().getUser.data!.userInfo!.userImageUrl = response.data; AppState().getUser.data!.userInfo!.userImageUrl = response.data;
} else { } else {
Utils.showToast(response.message ?? ""); Utils.showToast(response.message ?? "");
@ -234,7 +239,8 @@ class _DashboardPageState extends State<DashboardPage> {
int sizeInBytes = pickedImageFile.lengthSync(); int sizeInBytes = pickedImageFile.lengthSync();
// double sizeInMb = sizeInBytes / (1024 * 1024); // double sizeInMb = sizeInBytes / (1024 * 1024);
if (sizeInBytes > 1000) { if (sizeInBytes > 1000) {
Utils.showToast("File is larger then 1KB"); Utils.showToast(LocaleKeys.fileLarger.tr());
//("File is larger then 1KB");
} else { } else {
image64 = convertFileToBase64(pickedImageFile); image64 = convertFileToBase64(pickedImageFile);
@ -243,7 +249,8 @@ class _DashboardPageState extends State<DashboardPage> {
Utils.hideLoading(context); Utils.hideLoading(context);
Navigator.pop(context); Navigator.pop(context);
if (response.messageStatus == 1) { if (response.messageStatus == 1) {
Utils.showToast("Image is uploaded"); Utils.showToast(LocaleKeys.imageUploaded.tr());
//("Image is uploaded");
AppState().getUser.data!.userInfo!.userImageUrl = response.data; AppState().getUser.data!.userInfo!.userImageUrl = response.data;
} else { } else {
Utils.showToast(response.message ?? ""); Utils.showToast(response.message ?? "");

@ -4,6 +4,7 @@ import 'package:car_customer_app/classes/utils.dart';
import 'package:car_customer_app/config/routes.dart'; import 'package:car_customer_app/config/routes.dart';
import 'package:car_customer_app/extensions/int_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/extensions/string_extensions.dart';
import 'package:car_customer_app/generated/locale_keys.g.dart';
import 'package:car_customer_app/models/user/change_email.dart'; import 'package:car_customer_app/models/user/change_email.dart';
import 'package:car_customer_app/models/user/confirm_email.dart'; import 'package:car_customer_app/models/user/confirm_email.dart';
import 'package:car_customer_app/utils/navigator.dart'; import 'package:car_customer_app/utils/navigator.dart';
@ -12,6 +13,7 @@ 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/message_dialog.dart';
import 'package:car_customer_app/widgets/dialog/otp_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/widgets/show_fill_button.dart';
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'dart:convert'; import 'dart:convert';
@ -30,7 +32,7 @@ class _ChangeEmailPageState extends State<ChangeEmailPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: appBar(title: "Change Email"), appBar: appBar(title: LocaleKeys.changeEmail.tr()),
body: SingleChildScrollView( body: SingleChildScrollView(
child: Container( child: Container(
// width: double.infinity, // width: double.infinity,
@ -38,11 +40,11 @@ class _ChangeEmailPageState extends State<ChangeEmailPage> {
padding: EdgeInsets.all(40), padding: EdgeInsets.all(40),
child: Column( child: Column(
children: [ children: [
"Enter Email".toText24(), LocaleKeys.enterEmail.tr().toText24(),
12.height, 12.height,
TextFormField( TextFormField(
decoration: InputDecoration( decoration: InputDecoration(
hintText: "Enter New Email", hintText: LocaleKeys.enterNewEmail,
hintStyle: TextStyle(color: Colors.grey), hintStyle: TextStyle(color: Colors.grey),
border: OutlineInputBorder( border: OutlineInputBorder(
borderRadius: const BorderRadius.all( borderRadius: const BorderRadius.all(
@ -56,7 +58,8 @@ class _ChangeEmailPageState extends State<ChangeEmailPage> {
12.height, 12.height,
TextFormField( TextFormField(
decoration: InputDecoration( decoration: InputDecoration(
hintText: "Enter Current Password", hintText: LocaleKeys.enterCurrentPassword.tr(),
// hintText: "Enter Current Password ",
hintStyle: TextStyle(color: Colors.grey), hintStyle: TextStyle(color: Colors.grey),
border: OutlineInputBorder( border: OutlineInputBorder(
borderRadius: const BorderRadius.all( borderRadius: const BorderRadius.all(
@ -69,7 +72,7 @@ class _ChangeEmailPageState extends State<ChangeEmailPage> {
), ),
40.height, 40.height,
ShowFillButton( ShowFillButton(
title: "Confirm", title: LocaleKeys.confirm.tr(),
width: double.infinity, width: double.infinity,
onPressed: () { onPressed: () {
changeEmail(context); changeEmail(context);
@ -97,7 +100,8 @@ class _ChangeEmailPageState extends State<ChangeEmailPage> {
showMDialog( showMDialog(
context, context,
child: MessageDialog( child: MessageDialog(
title: "Email is Changed Successfully", title: LocaleKeys.emailChangedSuccessfully.tr(),
//"Email is Changed Successfully",
onClick: () { onClick: () {
Navigator.of(context).pushNamedAndRemoveUntil(AppRoutes.loginWithPassword, (Route<dynamic> route) => false); Navigator.of(context).pushNamedAndRemoveUntil(AppRoutes.loginWithPassword, (Route<dynamic> route) => false);
}, },

@ -4,6 +4,7 @@ import 'package:car_customer_app/classes/utils.dart';
import 'package:car_customer_app/config/routes.dart'; import 'package:car_customer_app/config/routes.dart';
import 'package:car_customer_app/extensions/int_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/extensions/string_extensions.dart';
import 'package:car_customer_app/generated/locale_keys.g.dart';
import 'package:car_customer_app/models/user/change_mobile.dart'; import 'package:car_customer_app/models/user/change_mobile.dart';
import 'package:car_customer_app/models/user/confirm_mobile.dart'; import 'package:car_customer_app/models/user/confirm_mobile.dart';
import 'package:car_customer_app/utils/navigator.dart'; import 'package:car_customer_app/utils/navigator.dart';
@ -12,6 +13,7 @@ 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/message_dialog.dart';
import 'package:car_customer_app/widgets/dialog/otp_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/widgets/show_fill_button.dart';
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'dart:convert'; import 'dart:convert';
@ -31,7 +33,7 @@ class _ChangeMobilePageState extends State<ChangeMobilePage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: appBar(title: "Change Mobile Number"), appBar: appBar(title: LocaleKeys.changeMobile.tr(),),
body: SingleChildScrollView( body: SingleChildScrollView(
child: Container( child: Container(
// width: double.infinity, // width: double.infinity,
@ -39,11 +41,12 @@ class _ChangeMobilePageState extends State<ChangeMobilePage> {
padding: EdgeInsets.all(40), padding: EdgeInsets.all(40),
child: Column( child: Column(
children: [ children: [
"Enter New Phone Number".toText24(), LocaleKeys.enterNewPhoneNumber.tr().toText24(),
12.height, 12.height,
TextFormField( TextFormField(
decoration: InputDecoration( decoration: InputDecoration(
hintText: "Enter New Phone Number", //hintText: "Enter New Phone Number",
hintText: LocaleKeys.enterNewPhoneNumber.tr(),
hintStyle: TextStyle(color: Colors.grey), hintStyle: TextStyle(color: Colors.grey),
border: OutlineInputBorder( border: OutlineInputBorder(
borderRadius: const BorderRadius.all( borderRadius: const BorderRadius.all(
@ -57,7 +60,8 @@ class _ChangeMobilePageState extends State<ChangeMobilePage> {
12.height, 12.height,
TextFormField( TextFormField(
decoration: InputDecoration( decoration: InputDecoration(
hintText: "Enter Current Password", hintText: LocaleKeys.enterCurrentPassword.tr(),
// hintText: "Enter Current Password",
hintStyle: TextStyle(color: Colors.grey), hintStyle: TextStyle(color: Colors.grey),
border: OutlineInputBorder( border: OutlineInputBorder(
borderRadius: const BorderRadius.all( borderRadius: const BorderRadius.all(
@ -70,7 +74,7 @@ class _ChangeMobilePageState extends State<ChangeMobilePage> {
), ),
40.height, 40.height,
ShowFillButton( ShowFillButton(
title: "Confirm", title: LocaleKeys.confirm.tr(),
width: double.infinity, width: double.infinity,
onPressed: () { onPressed: () {
changeMobile(context); changeMobile(context);
@ -98,7 +102,8 @@ class _ChangeMobilePageState extends State<ChangeMobilePage> {
showMDialog( showMDialog(
context, context,
child: MessageDialog( child: MessageDialog(
title: "Phone Number Verified", title:LocaleKeys.phoneNumberVerified.tr(),
//"Phone Number Verified",
onClick: () { onClick: () {
Navigator.of(context).pushNamedAndRemoveUntil(AppRoutes.loginWithPassword, (Route<dynamic> route) => false); Navigator.of(context).pushNamedAndRemoveUntil(AppRoutes.loginWithPassword, (Route<dynamic> route) => false);
}, },

@ -2,6 +2,7 @@ import 'package:car_customer_app/api/client/user_api_client.dart';
import 'package:car_customer_app/classes/utils.dart'; import 'package:car_customer_app/classes/utils.dart';
import 'package:car_customer_app/config/routes.dart'; import 'package:car_customer_app/config/routes.dart';
import 'package:car_customer_app/generated/locale_keys.g.dart';
import 'package:car_customer_app/models/user/change_password.dart'; import 'package:car_customer_app/models/user/change_password.dart';
import 'package:car_customer_app/models/user/confirm_password.dart'; import 'package:car_customer_app/models/user/confirm_password.dart';
import 'package:car_customer_app/utils/navigator.dart'; import 'package:car_customer_app/utils/navigator.dart';
@ -13,6 +14,7 @@ import 'package:car_customer_app/widgets/show_fill_button.dart';
import 'package:car_customer_app/extensions/string_extensions.dart'; import 'package:car_customer_app/extensions/string_extensions.dart';
import 'package:car_customer_app/extensions/int_extensions.dart'; import 'package:car_customer_app/extensions/int_extensions.dart';
import 'package:car_customer_app/widgets/txt_field.dart'; import 'package:car_customer_app/widgets/txt_field.dart';
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'dart:convert'; import 'dart:convert';
@ -34,7 +36,7 @@ class _ChangePasswordPageState extends State<ChangePasswordPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: appBar(title: "Change Password"), appBar: appBar(title: LocaleKeys.changePassword.tr()),
body: SingleChildScrollView( body: SingleChildScrollView(
child: Container( child: Container(
// width: double.infinity, // width: double.infinity,
@ -42,11 +44,12 @@ class _ChangePasswordPageState extends State<ChangePasswordPage> {
padding: EdgeInsets.all(40), padding: EdgeInsets.all(40),
child: Column( child: Column(
children: [ children: [
"Enter New Password".toText24(), LocaleKeys.enterNewPassword.tr().toText24(),
12.height, 12.height,
TextFormField( TextFormField(
decoration: InputDecoration( decoration: InputDecoration(
hintText: "Enter Old Password", // hintText: "Enter Old Password",
hintText: LocaleKeys.enterOldPassword.tr(),
hintStyle: TextStyle(color: Colors.grey), hintStyle: TextStyle(color: Colors.grey),
border: OutlineInputBorder( border: OutlineInputBorder(
borderRadius: const BorderRadius.all( borderRadius: const BorderRadius.all(
@ -60,7 +63,8 @@ class _ChangePasswordPageState extends State<ChangePasswordPage> {
12.height, 12.height,
TextFormField( TextFormField(
decoration: InputDecoration( decoration: InputDecoration(
hintText: "Enter New Password", //hintText: "Enter New Password",
hintText: LocaleKeys.enterNewPassword.tr(),
hintStyle: TextStyle(color: Colors.grey), hintStyle: TextStyle(color: Colors.grey),
border: OutlineInputBorder( border: OutlineInputBorder(
borderRadius: const BorderRadius.all( borderRadius: const BorderRadius.all(
@ -73,7 +77,7 @@ class _ChangePasswordPageState extends State<ChangePasswordPage> {
), ),
40.height, 40.height,
ShowFillButton( ShowFillButton(
title: "Confirm", title: LocaleKeys.confirm.tr(),
width: double.infinity, width: double.infinity,
onPressed: () { onPressed: () {
changePassword(context); changePassword(context);
@ -92,7 +96,8 @@ class _ChangePasswordPageState extends State<ChangePasswordPage> {
MResponse res = await UserApiClent().ChangePassword(currentPasswor, newPassword); MResponse res = await UserApiClent().ChangePassword(currentPasswor, newPassword);
Utils.hideLoading(context); Utils.hideLoading(context);
if (res.messageStatus == 1) { if (res.messageStatus == 1) {
Utils.showToast("Password is Updated"); Utils.showToast(LocaleKeys.passwordIsUpdated.tr());
//("Password is Updated");
// navigateWithName(context, AppRoutes.loginWithPassword); // navigateWithName(context, AppRoutes.loginWithPassword);
Navigator.of(context) Navigator.of(context)
.pushNamedAndRemoveUntil(AppRoutes.loginWithPassword, (Route<dynamic> route) => false); .pushNamedAndRemoveUntil(AppRoutes.loginWithPassword, (Route<dynamic> route) => false);
@ -100,7 +105,8 @@ class _ChangePasswordPageState extends State<ChangePasswordPage> {
Utils.showToast(res.message ?? ""); Utils.showToast(res.message ?? "");
} }
} else { } else {
Utils.showToast("Password Should contains Character, Number, Capital and small letters"); Utils.showToast(LocaleKeys.passwordShouldContains.tr());
//("Password Should contains Character, Number, Capital and small letters");
} }
} }

@ -1,6 +1,7 @@
import 'package:car_customer_app/api/client/user_api_client.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/classes/utils.dart';
import 'package:car_customer_app/config/routes.dart'; import 'package:car_customer_app/config/routes.dart';
import 'package:car_customer_app/generated/locale_keys.g.dart';
import 'package:car_customer_app/models/m_response.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/basic_otp.dart';
import 'package:car_customer_app/models/user/register_user.dart'; import 'package:car_customer_app/models/user/register_user.dart';
@ -15,6 +16,7 @@ import 'package:car_customer_app/extensions/widget_extensions.dart';
import 'package:car_customer_app/extensions/int_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/extensions/string_extensions.dart';
import 'package:car_customer_app/widgets/txt_field.dart'; import 'package:car_customer_app/widgets/txt_field.dart';
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class CompleteProfilePage extends StatefulWidget { class CompleteProfilePage extends StatefulWidget {
@ -39,7 +41,7 @@ class _CompleteProfilePageState extends State<CompleteProfilePage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: appBar(title: "Sign Up"), appBar: appBar(title: LocaleKeys.signUp.tr()),
body: Container( body: Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
@ -48,11 +50,11 @@ class _CompleteProfilePageState extends State<CompleteProfilePage> {
padding: EdgeInsets.all(20), padding: EdgeInsets.all(20),
child: Column( child: Column(
children: [ children: [
"Complete Profile".toText24(), LocaleKeys.completeProfile.tr().toText24(),
12.height, 12.height,
TxtField( TxtField(
hint: "First Name *", hint: LocaleKeys.firstName.tr(),
value: firstName, value: firstName,
onChanged: (v) { onChanged: (v) {
firstName = v; firstName = v;
@ -60,7 +62,7 @@ class _CompleteProfilePageState extends State<CompleteProfilePage> {
), ),
12.height, 12.height,
TxtField( TxtField(
hint: "Surname *", hint:LocaleKeys.surname.tr(),
value: lastName, value: lastName,
onChanged: (v) { onChanged: (v) {
lastName = v; lastName = v;
@ -68,17 +70,17 @@ class _CompleteProfilePageState extends State<CompleteProfilePage> {
), ),
12.height, 12.height,
TxtField( TxtField(
hint: "Email", hint: LocaleKeys.email.tr(),
value: email, value: email,
isButtonEnable: email!.length > 0 ? true : false, // isButtonEnable: email!.length > 0 ? true : false,
buttonTitle: "Verify", buttonTitle: LocaleKeys.verify.tr(),
onChanged: (v) { onChanged: (v) {
email = v; email = v;
}, },
), ),
12.height, 12.height,
TxtField( TxtField(
hint: "Create Password *", hint: LocaleKeys.createPass.tr(),
isPasswordEnabled: true, isPasswordEnabled: true,
maxLines: 1, maxLines: 1,
value: password, value: password,
@ -88,7 +90,7 @@ class _CompleteProfilePageState extends State<CompleteProfilePage> {
), ),
12.height, 12.height,
TxtField( TxtField(
hint: "Confirm Password *", hint: LocaleKeys.confirmPass.tr(),
isPasswordEnabled: true, isPasswordEnabled: true,
maxLines: 1, maxLines: 1,
value: confirmPassword, value: confirmPassword,
@ -104,12 +106,12 @@ class _CompleteProfilePageState extends State<CompleteProfilePage> {
Row( Row(
children: [ children: [
buildCheckbox(), buildCheckbox(),
"By creating an account you agree to our Terms of Service and\n Privacy Policy".toText12(), LocaleKeys.termsOfService.tr().toText12(),
], ],
), ),
16.height, 16.height,
ShowFillButton( ShowFillButton(
title: "Continue", title: LocaleKeys.continu.tr(),
width: double.infinity, width: double.infinity,
onPressed: () { onPressed: () {
if (validation()) performCompleteProfile(); if (validation()) performCompleteProfile();
@ -165,17 +167,20 @@ class _CompleteProfilePageState extends State<CompleteProfilePage> {
RegisterUser user = await UserApiClent().basicComplete(widget.user.data?.userId ?? "", firstName!, lastName!, email!, password!); RegisterUser user = await UserApiClent().basicComplete(widget.user.data?.userId ?? "", firstName!, lastName!, email!, password!);
Utils.hideLoading(context); Utils.hideLoading(context);
if (user.messageStatus == 1) { if (user.messageStatus == 1) {
Utils.showToast("Successfully Registered, Please login once"); Utils.showToast(LocaleKeys.successfullyRegistered.tr());
//("Successfully Registered, Please login once");
pop(context); pop(context);
// navigateReplaceWithName(context, AppRoutes.dashboard,arguments: user); // navigateReplaceWithName(context, AppRoutes.dashboard,arguments: user);
} else { } else {
Utils.showToast(user.message ?? ""); Utils.showToast(user.message ?? "");
} }
} else { } else {
Utils.showToast("Please enter same password"); Utils.showToast(LocaleKeys.pleaseEnterSamePassword.tr());
//("Please enter same password");
} }
} else { } else {
Utils.showToast("Password Should contains Character, Number, Capital and small letters"); Utils.showToast(LocaleKeys.passwordShouldContains.tr());
//("Password Should contains Character, Number, Capital and small letters");
} }
} }
@ -194,21 +199,26 @@ class _CompleteProfilePageState extends State<CompleteProfilePage> {
bool validation() { bool validation() {
bool isValid = true; bool isValid = true;
if (firstName!.isEmpty) { if (firstName!.isEmpty) {
Utils.showToast("First name is mandatory"); Utils.showToast(LocaleKeys.firstNameMandatory.tr());
//("First name is mandatory");
isValid = false; isValid = false;
} else if (lastName!.isEmpty) { } else if (lastName!.isEmpty) {
Utils.showToast("Surname is mandatory"); Utils.showToast(LocaleKeys.surnameNameMandatory.tr());
//("Surname is mandatory");
isValid = false; isValid = false;
} else if (email!.isNotEmpty) { } else if (email!.isNotEmpty) {
if(!isEmail(email!)){ if(!isEmail(email!)){
Utils.showToast("Enter Valid Email"); Utils.showToast(LocaleKeys.enterValidEmail.tr());
//("Enter Valid Email");
isValid = false; isValid = false;
} }
}else if (password!.isEmpty) { }else if (password!.isEmpty) {
Utils.showToast("Password is mandatory"); Utils.showToast(LocaleKeys.passwordNameMandatory.tr());
//("Password is mandatory");
isValid = false; isValid = false;
} else if (!isChecked) { } else if (!isChecked) {
Utils.showToast("Please accept terms"); Utils.showToast(LocaleKeys.pleaseAcceptTerms.tr());
//("Please accept terms");
isValid = false; isValid = false;
} }
return isValid; return isValid;

@ -5,11 +5,13 @@ import 'package:car_customer_app/classes/utils.dart';
import 'package:car_customer_app/config/routes.dart'; import 'package:car_customer_app/config/routes.dart';
import 'package:car_customer_app/extensions/int_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/extensions/string_extensions.dart';
import 'package:car_customer_app/generated/locale_keys.g.dart';
import 'package:car_customer_app/models/user/confirm_password.dart'; import 'package:car_customer_app/models/user/confirm_password.dart';
import 'package:car_customer_app/utils/navigator.dart'; import 'package:car_customer_app/utils/navigator.dart';
import 'package:car_customer_app/widgets/app_bar.dart'; import 'package:car_customer_app/widgets/app_bar.dart';
import 'package:car_customer_app/widgets/show_fill_button.dart'; import 'package:car_customer_app/widgets/show_fill_button.dart';
import 'package:car_customer_app/widgets/txt_field.dart'; import 'package:car_customer_app/widgets/txt_field.dart';
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'dart:convert'; import 'dart:convert';
@ -29,17 +31,18 @@ class ConfirmNewPasswordPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: appBar(title: "Forget Password"), appBar: appBar(title: LocaleKeys.forgetPassword.tr()),
body: Container( body: Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
padding: EdgeInsets.all(40), padding: EdgeInsets.all(40),
child: Column( child: Column(
children: [ children: [
"New Password".toText24(), LocaleKeys.newPassword.tr().toText24(),
12.height, 12.height,
TxtField( TxtField(
hint: "Inter New Password", // hint: "Enter New Password",
hint: LocaleKeys.enterNewPassword.tr(),
value: newPassword, value: newPassword,
onChanged: (v) { onChanged: (v) {
newPassword = v; newPassword = v;
@ -47,7 +50,7 @@ class ConfirmNewPasswordPage extends StatelessWidget {
), ),
40.height, 40.height,
ShowFillButton( ShowFillButton(
title: "Confirm", title: LocaleKeys.confirm.tr(),
width: double.infinity, width: double.infinity,
onPressed: () { onPressed: () {
confirmPasswordOTP(context); confirmPasswordOTP(context);

@ -2,6 +2,7 @@ import 'package:car_customer_app/api/client/user_api_client.dart';
import 'package:car_customer_app/classes/utils.dart'; import 'package:car_customer_app/classes/utils.dart';
import 'package:car_customer_app/config/routes.dart'; import 'package:car_customer_app/config/routes.dart';
import 'package:car_customer_app/generated/locale_keys.g.dart';
import 'package:car_customer_app/models/user/confirm_password.dart'; import 'package:car_customer_app/models/user/confirm_password.dart';
import 'package:car_customer_app/utils/navigator.dart'; import 'package:car_customer_app/utils/navigator.dart';
import 'package:car_customer_app/utils/utils.dart'; import 'package:car_customer_app/utils/utils.dart';
@ -12,6 +13,7 @@ import 'package:car_customer_app/widgets/show_fill_button.dart';
import 'package:car_customer_app/extensions/string_extensions.dart'; import 'package:car_customer_app/extensions/string_extensions.dart';
import 'package:car_customer_app/extensions/int_extensions.dart'; import 'package:car_customer_app/extensions/int_extensions.dart';
import 'package:car_customer_app/widgets/txt_field.dart'; import 'package:car_customer_app/widgets/txt_field.dart';
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'dart:convert'; import 'dart:convert';
@ -33,7 +35,7 @@ class _ConfirmNewPasswordPageState extends State<ConfirmNewPasswordPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: appBar(title: "Forget Password"), appBar: appBar(title: LocaleKeys.forgetPassword.tr()),
body: SingleChildScrollView( body: SingleChildScrollView(
child: Container( child: Container(
// width: double.infinity, // width: double.infinity,
@ -41,11 +43,12 @@ class _ConfirmNewPasswordPageState extends State<ConfirmNewPasswordPage> {
padding: EdgeInsets.all(40), padding: EdgeInsets.all(40),
child: Column( child: Column(
children: [ children: [
"New Password".toText24(), LocaleKeys.newPassword.toText24(),
12.height, 12.height,
TextFormField( TextFormField(
decoration: InputDecoration( decoration: InputDecoration(
hintText: "Enter New Password", // hintText: "Enter New Password",
hintText: LocaleKeys.enterNewPassword.tr(),
hintStyle: TextStyle(color: Colors.grey), hintStyle: TextStyle(color: Colors.grey),
border: OutlineInputBorder( border: OutlineInputBorder(
borderRadius: const BorderRadius.all( borderRadius: const BorderRadius.all(
@ -59,7 +62,8 @@ class _ConfirmNewPasswordPageState extends State<ConfirmNewPasswordPage> {
12.height, 12.height,
TextFormField( TextFormField(
decoration: InputDecoration( decoration: InputDecoration(
hintText: "Confirm Password", // hintText: "Confirm Password",
hintText: LocaleKeys.confirmPassword.tr(),
hintStyle: TextStyle(color: Colors.grey), hintStyle: TextStyle(color: Colors.grey),
border: OutlineInputBorder( border: OutlineInputBorder(
borderRadius: const BorderRadius.all( borderRadius: const BorderRadius.all(
@ -72,7 +76,7 @@ class _ConfirmNewPasswordPageState extends State<ConfirmNewPasswordPage> {
), ),
40.height, 40.height,
ShowFillButton( ShowFillButton(
title: "Confirm", title: LocaleKeys.confirm.tr(),
width: double.infinity, width: double.infinity,
onPressed: () { onPressed: () {
if (validation()) confirmPasswordOTP(context); if (validation()) confirmPasswordOTP(context);
@ -92,13 +96,15 @@ class _ConfirmNewPasswordPageState extends State<ConfirmNewPasswordPage> {
Utils.hideLoading(context); Utils.hideLoading(context);
ConfirmPassword data = ConfirmPassword.fromJson(jsonDecode(res.body)); ConfirmPassword data = ConfirmPassword.fromJson(jsonDecode(res.body));
if (data.messageStatus == 1) { if (data.messageStatus == 1) {
Utils.showToast("Password is Updated"); Utils.showToast(LocaleKeys.passwordIsUpdated.tr());
//("Password is Updated");
navigateWithName(context, AppRoutes.loginWithPassword); navigateWithName(context, AppRoutes.loginWithPassword);
} else { } else {
Utils.showToast(data.message ?? ""); Utils.showToast(data.message ?? "");
} }
}else{ }else{
Utils.showToast("Password Should contains Character, Number, Capital and small letters"); Utils.showToast(LocaleKeys.passwordShouldContains.tr());
//("Password Should contains Character, Number, Capital and small letters");
} }
} }

@ -6,6 +6,7 @@ import 'package:car_customer_app/classes/utils.dart';
import 'package:car_customer_app/config/routes.dart'; import 'package:car_customer_app/config/routes.dart';
import 'package:car_customer_app/extensions/int_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/extensions/string_extensions.dart';
import 'package:car_customer_app/generated/locale_keys.g.dart';
import 'package:car_customer_app/models/m_response.dart'; import 'package:car_customer_app/models/m_response.dart';
import 'package:car_customer_app/models/user/verify_email.dart'; import 'package:car_customer_app/models/user/verify_email.dart';
import 'package:car_customer_app/models/user/verify_email_otp.dart'; import 'package:car_customer_app/models/user/verify_email_otp.dart';
@ -14,6 +15,7 @@ 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/dialogs.dart';
import 'package:car_customer_app/widgets/dialog/message_dialog.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/dialog/otp_dialog.dart';
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
@ -29,7 +31,7 @@ class _EditAccountPageState extends State<EditAccountPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: appBar(title: "Edit Account"), appBar: appBar(title: LocaleKeys.editAccount.tr(),),
body: Container( body: Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
@ -39,7 +41,7 @@ class _EditAccountPageState extends State<EditAccountPage> {
20.height, 20.height,
ListTile( ListTile(
leading: SvgPicture.asset("assets/images/ic_lock.svg"), leading: SvgPicture.asset("assets/images/ic_lock.svg"),
title: "Change Password".toText12(), title: LocaleKeys.changePassword.tr().toText12(),
onTap: () { onTap: () {
navigateWithName(context, AppRoutes.changePassword); navigateWithName(context, AppRoutes.changePassword);
}, },
@ -49,14 +51,14 @@ class _EditAccountPageState extends State<EditAccountPage> {
mainAxisAlignment: MainAxisAlignment.spaceAround, mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [ children: [
SvgPicture.asset("assets/images/ic_mobile.svg"), SvgPicture.asset("assets/images/ic_mobile.svg"),
"Change Mobile".toText12(), LocaleKeys.changeMobile.tr().toText12(),
"Verify".toText12(), LocaleKeys.verify.tr().toText12(),
RaisedButton( RaisedButton(
onPressed: () { onPressed: () {
navigateWithName(context, AppRoutes.changeMobilePage); navigateWithName(context, AppRoutes.changeMobilePage);
}, },
child: Text( child: Text(
"Change", LocaleKeys.change.tr(),
style: TextStyle( style: TextStyle(
fontSize: 14, fontSize: 14,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
@ -75,7 +77,7 @@ class _EditAccountPageState extends State<EditAccountPage> {
Icons.email, Icons.email,
color: Colors.blue, color: Colors.blue,
), ),
"Change Email".toText12(), LocaleKeys.changeEmail.tr().toText12(),
InkWell( InkWell(
child: ((AppState().getUser.data!.userInfo!.isEmailVerified ?? false) ? "Verified" : "Verify").toText12(), child: ((AppState().getUser.data!.userInfo!.isEmailVerified ?? false) ? "Verified" : "Verify").toText12(),
onTap: (AppState().getUser.data!.userInfo!.isEmailVerified ?? false) onTap: (AppState().getUser.data!.userInfo!.isEmailVerified ?? false)
@ -89,7 +91,7 @@ class _EditAccountPageState extends State<EditAccountPage> {
navigateWithName(context, AppRoutes.changeEmailPage); navigateWithName(context, AppRoutes.changeEmailPage);
}, },
child: Text( child: Text(
"Change", LocaleKeys.change.tr(),
style: TextStyle( style: TextStyle(
fontSize: 14, fontSize: 14,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
@ -135,7 +137,8 @@ class _EditAccountPageState extends State<EditAccountPage> {
if (otpCompare.messageStatus == 1) { if (otpCompare.messageStatus == 1) {
AppState().getUser.data!.userInfo!.isEmailVerified = true; AppState().getUser.data!.userInfo!.isEmailVerified = true;
setState(() {}); setState(() {});
Utils.showToast("Email is verified successfully"); Utils.showToast(LocaleKeys.emailVerified.tr());
//("Email is verified successfully");
// Navigator.of(context).pushNamedAndRemoveUntil(AppRoutes.dashboard, (Route<dynamic> route) => false); // Navigator.of(context).pushNamedAndRemoveUntil(AppRoutes.dashboard, (Route<dynamic> route) => false);
// showMDialog( // showMDialog(
// context, // context,

@ -8,6 +8,7 @@ import 'package:car_customer_app/config/constants.dart';
import 'package:car_customer_app/config/routes.dart'; import 'package:car_customer_app/config/routes.dart';
import 'package:car_customer_app/extensions/int_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/extensions/string_extensions.dart';
import 'package:car_customer_app/generated/locale_keys.g.dart';
import 'package:car_customer_app/models/user/forget_password_otp_compare.dart'; import 'package:car_customer_app/models/user/forget_password_otp_compare.dart';
import 'package:car_customer_app/utils/navigator.dart'; import 'package:car_customer_app/utils/navigator.dart';
import 'package:car_customer_app/utils/utils.dart'; import 'package:car_customer_app/utils/utils.dart';
@ -15,6 +16,7 @@ import 'package:car_customer_app/widgets/app_bar.dart';
import 'package:car_customer_app/widgets/button/show_image_button.dart'; import 'package:car_customer_app/widgets/button/show_image_button.dart';
import 'package:car_customer_app/widgets/dialog/dialogs.dart'; import 'package:car_customer_app/widgets/dialog/dialogs.dart';
import 'package:car_customer_app/widgets/dialog/otp_dialog.dart'; import 'package:car_customer_app/widgets/dialog/otp_dialog.dart';
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:http/http.dart'; import 'package:http/http.dart';
@ -34,14 +36,14 @@ class _ForgetPasswordMethodPageState extends State<ForgetPasswordMethodPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: appBar(title: "Forget Password"), appBar: appBar(title: LocaleKeys.forgetPassword.tr()),
body: Container( body: Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
padding: EdgeInsets.all(40), padding: EdgeInsets.all(40),
child: Column( child: Column(
children: [ children: [
"Select Method".toText24(), LocaleKeys.selectMethod.tr().toText24(),
12.height, 12.height,
Row( Row(
children: [ children: [

@ -4,6 +4,7 @@ import 'package:car_customer_app/api/shared_prefrence.dart';
import 'package:car_customer_app/classes/utils.dart'; import 'package:car_customer_app/classes/utils.dart';
import 'package:car_customer_app/config/constants.dart'; import 'package:car_customer_app/config/constants.dart';
import 'package:car_customer_app/config/routes.dart'; import 'package:car_customer_app/config/routes.dart';
import 'package:car_customer_app/generated/locale_keys.g.dart';
import 'package:car_customer_app/models/user/forget_password_otp_compare.dart'; import 'package:car_customer_app/models/user/forget_password_otp_compare.dart';
import 'package:car_customer_app/models/user/forget_password_otp_request.dart'; import 'package:car_customer_app/models/user/forget_password_otp_request.dart';
import 'package:car_customer_app/pages/user/vertify_password_page.dart'; import 'package:car_customer_app/pages/user/vertify_password_page.dart';
@ -19,6 +20,7 @@ import 'package:car_customer_app/extensions/string_extensions.dart';
import 'package:car_customer_app/extensions/int_extensions.dart'; import 'package:car_customer_app/extensions/int_extensions.dart';
import 'package:car_customer_app/extensions/widget_extensions.dart'; import 'package:car_customer_app/extensions/widget_extensions.dart';
import 'package:car_customer_app/widgets/txt_field.dart'; import 'package:car_customer_app/widgets/txt_field.dart';
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:car_customer_app/models/user/user.dart'; import 'package:car_customer_app/models/user/user.dart';
@ -57,7 +59,7 @@ class _ForgetPasswordPageState extends State<ForgetPasswordPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: appBar(title: "Change Password"), appBar: appBar(title: LocaleKeys.changePassword.tr()),
body: Container( body: Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
@ -73,7 +75,7 @@ class _ForgetPasswordPageState extends State<ForgetPasswordPage> {
}, },
), ),
50.height, 50.height,
"Retrieve Password".toText24(), LocaleKeys.retrievePassword.tr().toText24(),
12.height, 12.height,
type == ClassType.NUMBER ? Column(children: [ type == ClassType.NUMBER ? Column(children: [
getCountry(), getCountry(),
@ -83,9 +85,11 @@ class _ForgetPasswordPageState extends State<ForgetPasswordPage> {
onChanged: (v) { onChanged: (v) {
userName = v; userName = v;
}, },
keyboardType: TextInputType.number,
) )
],) : TxtField( ],) : TxtField(
hint: "Email Address", hint: LocaleKeys.emailAddress.tr(),
//"Email Address",
value: userName, value: userName,
onChanged: (v) { onChanged: (v) {
userName = v; userName = v;
@ -93,7 +97,7 @@ class _ForgetPasswordPageState extends State<ForgetPasswordPage> {
), ),
50.height, 50.height,
ShowFillButton( ShowFillButton(
title: "Continue", title: LocaleKeys.continu.tr(),
width: double.infinity, width: double.infinity,
onPressed: () { onPressed: () {
if (userName.isNum() && type==ClassType.NUMBER) { if (userName.isNum() && type==ClassType.NUMBER) {

@ -6,6 +6,7 @@ import 'package:car_customer_app/classes/app_state.dart';
import 'package:car_customer_app/classes/utils.dart'; import 'package:car_customer_app/classes/utils.dart';
import 'package:car_customer_app/config/constants.dart'; import 'package:car_customer_app/config/constants.dart';
import 'package:car_customer_app/config/routes.dart'; import 'package:car_customer_app/config/routes.dart';
import 'package:car_customer_app/generated/locale_keys.g.dart';
import 'package:car_customer_app/models/user/login_password.dart'; import 'package:car_customer_app/models/user/login_password.dart';
import 'package:car_customer_app/models/user/register_user.dart'; import 'package:car_customer_app/models/user/register_user.dart';
import 'package:car_customer_app/models/user/user.dart'; import 'package:car_customer_app/models/user/user.dart';
@ -20,6 +21,7 @@ import 'package:car_customer_app/extensions/string_extensions.dart';
import 'package:car_customer_app/extensions/widget_extensions.dart'; import 'package:car_customer_app/extensions/widget_extensions.dart';
import 'package:car_customer_app/widgets/dialog/otp_dialog.dart'; import 'package:car_customer_app/widgets/dialog/otp_dialog.dart';
import 'package:car_customer_app/widgets/txt_field.dart'; import 'package:car_customer_app/widgets/txt_field.dart';
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:http/http.dart'; import 'package:http/http.dart';
@ -31,14 +33,14 @@ class LoginMethodSelectionPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: appBar(title: "Log In"), appBar: appBar(title: LocaleKeys.login.tr()),
body: Container( body: Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
padding: EdgeInsets.all(40), padding: EdgeInsets.all(40),
child: Column( child: Column(
children: [ children: [
"Login Selection".toText24(), LocaleKeys.loginSelection.tr().toText24(),
mFlex(2), mFlex(2),
Row( Row(
children: [ children: [
@ -57,7 +59,7 @@ class LoginMethodSelectionPage extends StatelessWidget {
onClick: () { onClick: () {
performBasicOtp(context); performBasicOtp(context);
}, },
title: 'Face Recognition', title: 'Face Recognition ',
icon: icons + "ic_face_id.png", icon: icons + "ic_face_id.png",
), ),
), ),
@ -118,7 +120,8 @@ class LoginMethodSelectionPage extends StatelessWidget {
SharedPrefManager.setUserId(user.data!.userInfo!.userId ?? ""); SharedPrefManager.setUserId(user.data!.userInfo!.userId ?? "");
navigateReplaceWithName(context, AppRoutes.dashboard); navigateReplaceWithName(context, AppRoutes.dashboard);
}else{ }else{
Utils.showToast("Sorry, Only Customer's can log in this app"); Utils.showToast(LocaleKeys.onlyCustomerApp.tr());
//("Sorry, Only Customer's can log in this app");
} }
} else { } else {

@ -6,6 +6,7 @@ import 'package:car_customer_app/classes/app_state.dart';
import 'package:car_customer_app/classes/utils.dart'; import 'package:car_customer_app/classes/utils.dart';
import 'package:car_customer_app/config/constants.dart'; import 'package:car_customer_app/config/constants.dart';
import 'package:car_customer_app/config/routes.dart'; import 'package:car_customer_app/config/routes.dart';
import 'package:car_customer_app/generated/locale_keys.g.dart';
import 'package:car_customer_app/models/user/login_password.dart'; import 'package:car_customer_app/models/user/login_password.dart';
import 'package:car_customer_app/models/user/register_user.dart'; import 'package:car_customer_app/models/user/register_user.dart';
import 'package:car_customer_app/models/user/user.dart'; import 'package:car_customer_app/models/user/user.dart';
@ -20,6 +21,7 @@ import 'package:car_customer_app/extensions/string_extensions.dart';
import 'package:car_customer_app/extensions/widget_extensions.dart'; import 'package:car_customer_app/extensions/widget_extensions.dart';
import 'package:car_customer_app/widgets/dialog/otp_dialog.dart'; import 'package:car_customer_app/widgets/dialog/otp_dialog.dart';
import 'package:car_customer_app/widgets/txt_field.dart'; import 'package:car_customer_app/widgets/txt_field.dart';
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:http/http.dart'; import 'package:http/http.dart';
@ -86,14 +88,14 @@ class _LoginVerificationPageState extends State<LoginVerificationPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: appBar(title: "Log In"), appBar: appBar(title: LocaleKeys.login.tr()),
body: Container( body: Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
padding: EdgeInsets.all(40), padding: EdgeInsets.all(40),
child: Column( child: Column(
children: [ children: [
"Verify Account".toText24(), LocaleKeys.verifyAccount.tr().toText24(),
mFlex(2), mFlex(2),
Row( Row(
children: [ children: [

@ -2,6 +2,7 @@ import 'package:car_customer_app/api/client/user_api_client.dart';
import 'package:car_customer_app/classes/utils.dart'; import 'package:car_customer_app/classes/utils.dart';
import 'package:car_customer_app/config/constants.dart'; import 'package:car_customer_app/config/constants.dart';
import 'package:car_customer_app/config/routes.dart'; import 'package:car_customer_app/config/routes.dart';
import 'package:car_customer_app/generated/locale_keys.g.dart';
import 'package:car_customer_app/models/user/basic_otp.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/models/user/register_user.dart';
import 'package:car_customer_app/utils/navigator.dart'; import 'package:car_customer_app/utils/navigator.dart';
@ -15,6 +16,7 @@ import 'package:car_customer_app/extensions/int_extensions.dart';
import 'package:car_customer_app/extensions/string_extensions.dart'; import 'package:car_customer_app/extensions/string_extensions.dart';
import 'package:car_customer_app/extensions/widget_extensions.dart'; import 'package:car_customer_app/extensions/widget_extensions.dart';
import 'package:car_customer_app/widgets/txt_field.dart'; import 'package:car_customer_app/widgets/txt_field.dart';
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class LoginVerifyAccountPage extends StatelessWidget { class LoginVerifyAccountPage extends StatelessWidget {
@ -24,14 +26,14 @@ class LoginVerifyAccountPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: appBar(title: "Log In"), appBar: appBar(title: LocaleKeys.login.tr()),
body: Container( body: Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
padding: EdgeInsets.all(40), padding: EdgeInsets.all(40),
child: Column( child: Column(
children: [ children: [
"Verify Account".toText24(), LocaleKeys.verifyAccount.tr().toText24(),
mFlex(1), mFlex(1),
TxtField( TxtField(
hint: "966501234567", hint: "966501234567",
@ -125,7 +127,8 @@ class LoginVerifyAccountPage extends StatelessWidget {
showMDialog( showMDialog(
context, context,
child: MessageDialog( child: MessageDialog(
title: "Phone Number Verified", title: LocaleKeys.phoneNumberVerified.tr(),
//"Phone Number Verified",
onClick: () { onClick: () {
pop(context); pop(context);
navigateWithName(context, AppRoutes.profile1,arguments: user); navigateWithName(context, AppRoutes.profile1,arguments: user);

@ -5,6 +5,7 @@ import 'package:car_customer_app/api/client/user_api_client.dart';
import 'package:car_customer_app/classes/utils.dart'; import 'package:car_customer_app/classes/utils.dart';
import 'package:car_customer_app/config/constants.dart'; import 'package:car_customer_app/config/constants.dart';
import 'package:car_customer_app/config/routes.dart'; import 'package:car_customer_app/config/routes.dart';
import 'package:car_customer_app/generated/locale_keys.g.dart';
import 'package:car_customer_app/models/user/basic_otp.dart'; import 'package:car_customer_app/models/user/basic_otp.dart';
import 'package:car_customer_app/models/user/login_password.dart'; import 'package:car_customer_app/models/user/login_password.dart';
import 'package:car_customer_app/models/user/register_user.dart'; import 'package:car_customer_app/models/user/register_user.dart';
@ -21,6 +22,7 @@ import 'package:car_customer_app/extensions/widget_extensions.dart';
import 'package:car_customer_app/widgets/show_fill_button.dart'; import 'package:car_customer_app/widgets/show_fill_button.dart';
import 'package:car_customer_app/widgets/tab/login_email_tab.dart'; import 'package:car_customer_app/widgets/tab/login_email_tab.dart';
import 'package:car_customer_app/widgets/txt_field.dart'; import 'package:car_customer_app/widgets/txt_field.dart';
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:http/http.dart'; import 'package:http/http.dart';
@ -55,7 +57,7 @@ class _LoginWithPasswordState extends State<LoginWithPassword> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: appBar(title: "Log In"), appBar: appBar(title: LocaleKeys.login.tr()),
body: Container( body: Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
@ -86,7 +88,7 @@ class _LoginWithPasswordState extends State<LoginWithPassword> {
), ),
6.height, 6.height,
TxtField( TxtField(
hint: "Enter Password?", hint: LocaleKeys.EnterPass.tr(),
value: password, value: password,
isPasswordEnabled: true, isPasswordEnabled: true,
maxLines: 1, maxLines: 1,
@ -100,14 +102,14 @@ class _LoginWithPasswordState extends State<LoginWithPassword> {
Row( Row(
mainAxisAlignment: MainAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end,
children: [ children: [
"Forget Password?".toText12(color: Colors.blue).onPress(() { LocaleKeys.forgetPass.tr().toText12(color: Colors.blue).onPress(() {
navigateWithName(context, AppRoutes.forgetPassword); navigateWithName(context, AppRoutes.forgetPassword);
}), }),
], ],
), ),
50.height, 50.height,
ShowFillButton( ShowFillButton(
title: "Log In", title: LocaleKeys.login.tr(),
width: double.infinity, width: double.infinity,
onPressed: () { onPressed: () {
performBasicOtp(context); performBasicOtp(context);

@ -2,6 +2,7 @@ import 'package:car_customer_app/api/api_client.dart';
import 'package:car_customer_app/api/client/user_api_client.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/classes/utils.dart';
import 'package:car_customer_app/config/routes.dart'; import 'package:car_customer_app/config/routes.dart';
import 'package:car_customer_app/generated/locale_keys.g.dart';
import 'package:car_customer_app/models/user/basic_otp.dart'; import 'package:car_customer_app/models/user/basic_otp.dart';
import 'package:car_customer_app/models/user/country.dart'; import 'package:car_customer_app/models/user/country.dart';
import 'package:car_customer_app/models/user/register_user.dart'; import 'package:car_customer_app/models/user/register_user.dart';
@ -18,6 +19,7 @@ import 'package:car_customer_app/extensions/int_extensions.dart';
import 'package:car_customer_app/extensions/string_extensions.dart'; import 'package:car_customer_app/extensions/string_extensions.dart';
import 'package:car_customer_app/extensions/widget_extensions.dart'; import 'package:car_customer_app/extensions/widget_extensions.dart';
import 'package:car_customer_app/widgets/txt_field.dart'; import 'package:car_customer_app/widgets/txt_field.dart';
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class RegisterPage extends StatelessWidget { class RegisterPage extends StatelessWidget {
@ -27,14 +29,14 @@ class RegisterPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: appBar(title: "Sign Up"), appBar: appBar(title: LocaleKeys.signUp.tr(),),
body: Container( body: Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
padding: EdgeInsets.all(40), padding: EdgeInsets.all(40),
child: Column( child: Column(
children: [ children: [
"Enter Phone Number".toText24(), LocaleKeys.enterPhoneNumber.tr().toText24(),
// 12.height, // 12.height,
// FutureBuilder<Role>( // FutureBuilder<Role>(
// future: UserApiClent().getRoles(), // future: UserApiClent().getRoles(),
@ -78,7 +80,7 @@ class RegisterPage extends StatelessWidget {
), ),
50.height, 50.height,
ShowFillButton( ShowFillButton(
title: "Continue", title: LocaleKeys.continu.tr(),
width: double.infinity, width: double.infinity,
onPressed: () { onPressed: () {
if (validation()) performBasicOtp(context); if (validation()) performBasicOtp(context);
@ -117,13 +119,16 @@ class RegisterPage extends StatelessWidget {
bool validation() { bool validation() {
bool isValid = true; bool isValid = true;
if (role == -1) { if (role == -1) {
Utils.showToast("Please select Provider Role"); Utils.showToast(LocaleKeys.selectProviderRole.tr());
//("Please select Provider Role");
isValid = false; isValid = false;
} else if (countryCode.isEmpty) { } else if (countryCode.isEmpty) {
Utils.showToast("Please select Country Code"); Utils.showToast(LocaleKeys.selectCountryCode.tr());
//("Please select Country Code");
isValid = false; isValid = false;
} else if (phoneNum.isEmpty) { } else if (phoneNum.isEmpty) {
Utils.showToast("Please add Phone No"); Utils.showToast(LocaleKeys.addPhoneNo.tr());
//("Please add Phone No");
isValid = false; isValid = false;
} }
return isValid; return isValid;

@ -1,4 +1,5 @@
import 'package:car_customer_app/config/routes.dart'; import 'package:car_customer_app/config/routes.dart';
import 'package:car_customer_app/generated/locale_keys.g.dart';
import 'package:car_customer_app/utils/navigator.dart'; import 'package:car_customer_app/utils/navigator.dart';
import 'package:car_customer_app/utils/utils.dart'; import 'package:car_customer_app/utils/utils.dart';
import 'package:car_customer_app/widgets/app_bar.dart'; import 'package:car_customer_app/widgets/app_bar.dart';
@ -6,23 +7,24 @@ import 'package:car_customer_app/widgets/show_fill_button.dart';
import 'package:car_customer_app/extensions/string_extensions.dart'; import 'package:car_customer_app/extensions/string_extensions.dart';
import 'package:car_customer_app/extensions/int_extensions.dart'; import 'package:car_customer_app/extensions/int_extensions.dart';
import 'package:car_customer_app/extensions/widget_extensions.dart'; import 'package:car_customer_app/extensions/widget_extensions.dart';
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class RegisterSelectionPage extends StatelessWidget { class RegisterSelectionPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: appBar(title: "Log In"), appBar: appBar(title: LocaleKeys.login.tr()),
body: Container( body: Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
padding: EdgeInsets.all(40), padding: EdgeInsets.all(40),
child: Column( child: Column(
children: [ children: [
"Welcome Message".toText24(), LocaleKeys.welcomeMessage.tr().toText24(),
mFlex(1), mFlex(1),
ShowFillButton( ShowFillButton(
title: "Log In", title: LocaleKeys.login.tr(),
// title: "Log In With Password", // title: "Log In With Password",
width: double.infinity, width: double.infinity,
onPressed: () { onPressed: () {
@ -39,7 +41,7 @@ class RegisterSelectionPage extends StatelessWidget {
// ), // ),
20.height, 20.height,
ShowFillButton( ShowFillButton(
title: "Sign Up", title: LocaleKeys.signUp.tr(),
width: double.infinity, width: double.infinity,
onPressed: () { onPressed: () {
navigateWithName(context, AppRoutes.register); navigateWithName(context, AppRoutes.register);
@ -47,7 +49,7 @@ class RegisterSelectionPage extends StatelessWidget {
), ),
20.height, 20.height,
ShowFillButton( ShowFillButton(
title: "Forget Password", title: LocaleKeys.forgetPassword.tr(),
width: double.infinity, width: double.infinity,
onPressed: () { onPressed: () {
navigateWithName(context, AppRoutes.forgetPassword); navigateWithName(context, AppRoutes.forgetPassword);

@ -2,9 +2,11 @@ import 'dart:async';
import 'package:car_customer_app/config/routes.dart'; import 'package:car_customer_app/config/routes.dart';
import 'package:car_customer_app/extensions/string_extensions.dart'; import 'package:car_customer_app/extensions/string_extensions.dart';
import 'package:car_customer_app/generated/locale_keys.g.dart';
import 'package:car_customer_app/utils/navigator.dart'; import 'package:car_customer_app/utils/navigator.dart';
import 'package:car_customer_app/utils/utils.dart'; import 'package:car_customer_app/utils/utils.dart';
import 'package:car_customer_app/extensions/widget_extensions.dart'; import 'package:car_customer_app/extensions/widget_extensions.dart';
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class SplashPage extends StatelessWidget { class SplashPage extends StatelessWidget {
@ -19,11 +21,11 @@ class SplashPage extends StatelessWidget {
mFlex(5), mFlex(5),
"Logo".toText(fontSize: 45, isBold: true), "Logo".toText(fontSize: 45, isBold: true),
mFlex(3), mFlex(3),
"First Time Log In".toText(fontSize: 18, isBold: true).onPress(() { LocaleKeys.firstTimeLogIn.tr().toText(fontSize: 18, isBold: true).onPress(() {
navigateWithName(context, AppRoutes.registerSelection); navigateWithName(context, AppRoutes.registerSelection);
}), }),
mFlex(1), mFlex(1),
"Already Signed Up and Logged In".toText(fontSize: 18, isBold: true).onPress(() { LocaleKeys.alreadySigned.tr().toText(fontSize: 18, isBold: true).onPress(() {
navigateWithName(context, AppRoutes.loginVerification); navigateWithName(context, AppRoutes.loginVerification);
}), }),
mFlex(5), mFlex(5),

@ -3,6 +3,7 @@
import 'package:car_customer_app/classes/utils.dart'; import 'package:car_customer_app/classes/utils.dart';
import 'package:car_customer_app/config/constants.dart'; import 'package:car_customer_app/config/constants.dart';
import 'package:car_customer_app/config/routes.dart'; import 'package:car_customer_app/config/routes.dart';
import 'package:car_customer_app/generated/locale_keys.g.dart';
import 'package:car_customer_app/models/user/forget_password_otp_compare.dart'; import 'package:car_customer_app/models/user/forget_password_otp_compare.dart';
import 'package:car_customer_app/models/user/forget_password_otp_request.dart'; import 'package:car_customer_app/models/user/forget_password_otp_request.dart';
import 'package:car_customer_app/utils/navigator.dart'; import 'package:car_customer_app/utils/navigator.dart';
@ -16,6 +17,7 @@ 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/message_dialog.dart';
import 'package:car_customer_app/widgets/dialog/otp_dialog.dart'; import 'package:car_customer_app/widgets/dialog/otp_dialog.dart';
import 'package:car_customer_app/widgets/txt_field.dart'; import 'package:car_customer_app/widgets/txt_field.dart';
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -31,14 +33,14 @@ class VerifyPasswordPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: appBar(title: "Change Password"), appBar: appBar(title: LocaleKeys.changePassword.tr()),
body: Container( body: Container(
width: double.infinity, width: double.infinity,
height: double.infinity, height: double.infinity,
padding: EdgeInsets.all(40), padding: EdgeInsets.all(40),
child: Column( child: Column(
children: [ children: [
"Verify New Password".toText24(), LocaleKeys.verifyNewPassword.tr().toText24(),
mFlex(1), mFlex(1),
TxtField( TxtField(
hint: "966500000000", hint: "966500000000",
@ -62,7 +64,7 @@ class VerifyPasswordPage extends StatelessWidget {
(value) => showMDialog( (value) => showMDialog(
context, context,
child: MessageDialog( child: MessageDialog(
title: "Phone Number Verified", title: LocaleKeys.phoneNumberVerified.tr(),
onClick: () { onClick: () {
otpType=1; otpType=1;
navigateWithName(context, AppRoutes.confirmNewPasswordPage); navigateWithName(context, AppRoutes.confirmNewPasswordPage);
@ -91,7 +93,8 @@ class VerifyPasswordPage extends StatelessWidget {
(value) => showMDialog( (value) => showMDialog(
context, context,
child: MessageDialog( child: MessageDialog(
title: "Phone Number Verified", title: LocaleKeys.phoneNumberVerified.tr(),
//"Phone Number Verified ",
onClick: () { onClick: () {
otpType=2; otpType=2;
navigateWithName(context, AppRoutes.confirmNewPasswordPage); navigateWithName(context, AppRoutes.confirmNewPasswordPage);

@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
import 'colors.dart'; import 'colors.dart';
class AppTheme { class AppTheme {
static getTheme() => ThemeData( static getTheme(isArabic) => ThemeData(
// This is the theme of your application. // This is the theme of your application.
// //
// Try running your application with "flutter run". You'll see the // Try running your application with "flutter run". You'll see the

@ -23,6 +23,7 @@ class TxtField extends StatelessWidget {
bool isNeedBorder; bool isNeedBorder;
bool? isPasswordEnabled; bool? isPasswordEnabled;
Function(String)? onChanged; Function(String)? onChanged;
TextInputType? keyboardType;
TxtField({ TxtField({
@ -42,6 +43,7 @@ class TxtField extends StatelessWidget {
this.isNeedBorder=true, this.isNeedBorder=true,
this.onChanged, this.onChanged,
this.isPasswordEnabled, this.isPasswordEnabled,
this.keyboardType,
}); });
@override @override
@ -61,6 +63,7 @@ class TxtField extends StatelessWidget {
elevation: elevation, elevation: elevation,
margin: isSidePaddingZero?EdgeInsets.zero:null, margin: isSidePaddingZero?EdgeInsets.zero:null,
child: TextField( child: TextField(
keyboardType: TextInputType.number,
autofocus: false, autofocus: false,
controller: controller, controller: controller,
enabled: isNeedClickAll == true ? false : true, enabled: isNeedClickAll == true ? false : true,

@ -72,7 +72,7 @@ packages:
source: hosted source: hosted
version: "1.0.4" version: "1.0.4"
easy_localization: easy_localization:
dependency: "direct dev" dependency: "direct main"
description: description:
name: easy_localization name: easy_localization
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"

@ -35,6 +35,7 @@ dependencies:
# Use with the CupertinoIcons class for iOS style icons. # Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.2 cupertino_icons: ^1.0.2
image_picker: ^0.8.4+4 image_picker: ^0.8.4+4
easy_localization: ^3.0.0
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
@ -49,7 +50,6 @@ dev_dependencies:
path_provider: ^2.0.4 path_provider: ^2.0.4
injector: ^2.0.0 injector: ^2.0.0
provider: ^6.0.0 provider: ^6.0.0
easy_localization: ^3.0.0
http: ^0.13.3 http: ^0.13.3
permission_handler: ^9.2.0 permission_handler: ^9.2.0
flutter_svg: ^1.0.3 flutter_svg: ^1.0.3

@ -0,0 +1,104 @@
{
"firstTimeLogIn": "تسجيل الدخول لأول مره",
"signUp": "تسجيل دخول",
"changeMobile": "تغيير رقم الجوال",
"notifications": "الاشعارات",
"general": "عام",
"defineLicences": "تحديد الرخص",
"dealershipSettings": "اعدادات البيع",
"changePassword": "تغيير كلمة المرور",
"retrievePassword" : "استرجاع كلمة المرور",
"changeEmail": "تغيير الايميل",
"verify": "تحقق",
"signOut": "تسجيل خروج",
"enterEmail": "ادخل الايميل",
"enterNewEmail": "ادخل ايميل جديد",
"enterCurrentPassword": "كلمة المرور الحاليه",
"enterNewPassword": "كلمة المرور الجديده",
"enterOldPassword": "كلمة المرور القديمه",
"confirm": "تأكيد",
"enterNewPhoneNumber": "رقم جوال جديد",
"completeProfile": "الملف الشخصي",
"continu": "استمرار",
"confirmPassword": "تأكيد كلمة المرور",
"createPassword": "انشاء كلمة مرور جديده",
"email": "ايميل",
"firstName": "الأسم الأول *",
"surname": "اسم العائله *",
"confirmPass": "تأكيد كلمة المرور *",
"createPass": "انشاء كلمة مرور جديده *",
"newPassword": " كلمة مرور جديده",
"forgetPassword": "نسيت كلمة المرور",
"editAccount": "تعديل الحساب",
"change": "تغيير",
"verifyAccount": "التحقق من الحساب",
"login" : "تسجيل دخول",
"welcomeMessage" : "مرحبا",
"forgetPass": "نسيت كلمة المرور ؟",
"enterPhoneNumber": "رقم جوال ",
"phoneNumberVerified": "تم التحقق من الجوال",
"verifyNewPassword": "التحقق من كلمة المرور",
"EnterPass": "ادخل كلمة المرور",
"alreadySigned": " تم تسجيل الدخول",
"emailChangedSuccessfully": "تم تغيير الايميل بنجاح",
"passwordIsUpdated" : "تم تحجيث كلمة المرور",
"passwordShouldContains" : "كلمة المرور يجب ان تحتوي على رمز رقم حرف كبير حرف صغير",
" successfullyRegistered": "تم التسجيل بنجاح",
"pleaseEnterSamePassword" : "ادخل كلمة مرور مطابقه",
"firstNameMandatory" : "ادخل الأسم الأول ",
"surnameNameMandatory" : "ادخل اسم العائله",
"passwordNameMandatory" : "ادخل كلمة المرور",
"enterValidEmail" : "ادخل ايميل صحيح",
"pleaseAcceptTerms" : "يجب الموافقه على الشروط",
"emailVerified" : "تم التحقق من الايميل بنجاح",
"selectMethod" : "اختر",
"emailAddress" : "ايميل",
"loginSelection" : "اختر",
"selectCountryCode" : "اختر رمز الدوله",
"selectProviderRole" : "اختر نوع الخدمه",
"addPhoneNo" : "اضف الهاتف",
"onlyCustomerApp": "نأسف هذا التطبيق فقط للعملاء",
"imageUploaded" : "تم تحميل الصوره",
"fileLarger" : "1KB حجم الملف اكبر من",
"account" : "الحساب",
"edit" : "تعديل",
"imageDeleted" : "تم حذف الصوره",
"dashboard" : "الصفحه الرئيسيه",
"termsOfService":"من خلال إنشاء حساب فإنك توافق على شروط الخدمة و\n سياسة الخصوصية",
"title": "Hello",
"msg": "Hello {} in the {} world ",
"msg_named": "{} are written in the {lang} language",
"clickMe": "Click me",
"profile": {
"reset_password": {
"label": "Reset Password",
"username": "Username",
"password": "password"
}
},
"clicked": {
"zero": "You clicked {} times!",
"one": "You clicked {} time!",
"two": "You clicked {} times!",
"few": "You clicked {} times!",
"many": "You clicked {} times!",
"other": "You clicked {} times!"
},
"amount": {
"zero": "Your amount : {} ",
"one": "Your amount : {} ",
"two": "Your amount : {} ",
"few": "Your amount : {} ",
"many": "Your amount : {} ",
"other": "Your amount : {} "
},
"gender": {
"male": "Hi man ;) ",
"female": "Hello girl :)",
"with_arg": {
"male": "Hi man ;) {}",
"female": "Hello girl :) {}"
}
},
"reset_locale": "Reset Language"
}

@ -1,4 +1,70 @@
{ {
"firstTimeLogIn" : "First Time Log In",
"signUp": "Sing Up",
"changeMobile": "Change Mobile",
"notifications": "Notifications",
"general": "General",
"defineLicences": "Define Licences",
"dealershipSettings": "Dealership Settings",
"changePassword": "Change Password",
"retrievePassword" : "Retrieve Password",
"changeEmail": "Change Email",
"verify": "Verify",
"signOut": "Sign Out",
"enterEmail": "Enter Email",
"enterNewEmail": "Enter New Email",
"enterNewPassword": "Enter New Password",
"enterCurrentPassword": "Enter Current Password",
"enterOldPassword": "Enter Old Password",
"confirm": "Confirm",
"completeProfile": "Complete Profile",
"enterNewPhoneNumber": "Enter New Phone Number",
"enterPhoneNumber": "Enter Phone Number",
"continu": "Continue",
"confirmPassword": "Confirm Password",
"createPassword": "Create Password",
"email": "Email",
"firstName": "First Name *",
"surname": "Surname *",
"confirmPass": "Confirm Password *",
"createPass": "Create Password *",
"newPassword": "New Password",
"forgetPassword": "Forget Password",
"editAccount": "Edit Account",
"change": "Change",
"verifyAccount": "Verify Account",
"login" : "Log In",
"welcomeMessage" : "Welcome Message",
"forgetPass": "Forget Password ?",
"phoneNumberVerified": "Phone Number Verified",
"verifyNewPassword": "Verify New Password",
"EnterPass": "Enter Password ?",
"alreadySigned": " Already Signed Up and Logged In",
"emailChangedSuccessfully": "Email is Changed Successfully",
"passwordIsUpdated" : "Password is Updated",
"passwordShouldContains" : "Password Should contains Character, Number, Capital and small letters,",
" successfullyRegistered": " Successfully Registered, Please login once,",
"pleaseEnterSamePassword" : "Please enter same password",
"firstNameMandatory" : "First name is mandatory",
"surnameNameMandatory" : "Surname is mandatory",
"passwordNameMandatory" : "Password is mandatory",
"enterValidEmail" : "Enter Valid Email",
"pleaseAcceptTerms" : "Please accept terms",
"emailVerified" : "Email is verified successfully",
"selectMethod" : "Select Method",
"emailAddress" : "Email Address",
"loginSelection" : "Login Selection",
"selectCountryCode" : "Please select Country Code",
"selectProviderRole" : "Please select Provider Role",
"addPhoneNo" : "Please add Phone No",
"onlyCustomerApp": "Sorry, Only Customer's can log in this app",
"imageUploaded" : "Image is uploaded",
"fileLarger" : "File is larger then 1KB",
"account" : "Account",
"edit" : "EDIT",
"imageDeleted" : "Image is Deleted",
"dashboard" : "Dashboard/Main Page",
"termsOfService":"By creating an account you agree to our Terms of Service and\n Privacy Policy",
"title": "Hello", "title": "Hello",
"msg": "Hello {} in the {} world ", "msg": "Hello {} in the {} world ",
"msg_named": "{} are written in the {lang} language", "msg_named": "{} are written in the {lang} language",

@ -1,38 +0,0 @@
{
"title": "Hello",
"msg": "Hello {} in the {} world ",
"msg_named": "{} are written in the {lang} language",
"clickMe": "Click me",
"profile": {
"reset_password": {
"label": "Reset Password",
"username": "Username",
"password": "password"
}
},
"clicked": {
"zero": "You clicked {} times!",
"one": "You clicked {} time!",
"two": "You clicked {} times!",
"few": "You clicked {} times!",
"many": "You clicked {} times!",
"other": "You clicked {} times!"
},
"amount": {
"zero": "Your amount : {} ",
"one": "Your amount : {} ",
"two": "Your amount : {} ",
"few": "Your amount : {} ",
"many": "Your amount : {} ",
"other": "Your amount : {} "
},
"gender": {
"male": "Hi man ;) ",
"female": "Hello girl :)",
"with_arg": {
"male": "Hi man ;) {}",
"female": "Hello girl :) {}"
}
},
"reset_locale": "Reset Language"
}
Loading…
Cancel
Save