Merge branch 'fatima' into mirza_dev

# Conflicts:
#	lib/pages/dashboard/dashboard_page.dart
#	lib/pages/settings/define_branch_page.dart
#	lib/pages/settings/define_license_page.dart
#	lib/pages/user/complete_profile_page.dart
#	lib/pages/user/edit_account_page.dart
#	lib/pages/user/forget_password_page.dart
#	lib/pages/user/login_with_password_page.dart
#	lib/pages/user/register_page.dart
mirza_dev
devmirza121 4 years ago
commit 4b8422617f

@ -1,3 +1,4 @@
import 'package:car_provider_app/models/post_params_model.dart';
import 'package:car_provider_app/models/user/user.dart'; import 'package:car_provider_app/models/user/user.dart';
class AppState { class AppState {
@ -18,4 +19,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;
}
} }

@ -11,7 +11,7 @@ class Utils {
static void showToast(String message) { static void showToast(String message) {
Fluttertoast.showToast( Fluttertoast.showToast(
msg: message, toastLength: Toast.LENGTH_SHORT, gravity: ToastGravity.BOTTOM, timeInSecForIosWeb: 1, backgroundColor: Colors.black54, textColor: Colors.white, fontSize: 16.0); msg: message, toastLength: Toast.LENGTH_SHORT, gravity: ToastGravity.BOTTOM, timeInSecForIosWeb: 2, backgroundColor: Colors.black54, textColor: Colors.white, fontSize: 16.0);
} }
static dynamic getNotNullValue(List<dynamic> list, int index) { static dynamic getNotNullValue(List<dynamic> list, int index) {

@ -77,7 +77,7 @@ extension EmailValidator on String {
} }
bool isNum() { bool isNum() {
return RegExp(r'[0-9]').hasMatch(this); return RegExp(r'^[0-9]+$').hasMatch(this);
} }
String toFormattedDate() { String toFormattedDate() {

@ -14,7 +14,101 @@ 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": "اضف الهاتف",
"onlyProviderApp": "نأسف هذا التطبيق فقط لمقدمي الخدمات",
"imageUploaded": "تم تحميل الصوره",
"fileLarger": "1KB حجم الملف اكبر من",
"account": "الحساب",
"edit": "تعديل",
"imageDeleted": "تم حذف الصوره",
"dashboard": "الصفحه الرئيسيه",
"pickAddress": "اختر العنوان",
"pickLocation": "اختر الموقع",
"save": "حفظ",
"defineServices": "تحديد الخدمات",
"selectBranch ": "اختر الفرع",
"selectServiceCategory": "اختر فئة الخدمة",
"defineBranches": "تحديد الفروع",
"defineProviders": "تحديد الموفرين",
"closeAccount": "اغلاق الحساب",
"createBranch": "انشاء فرع",
"address": "العنوان",
"branchDescription": "وصف الفرع",
"branchName": "اسم الفرع",
"chooseCity": "اختر المدينه",
"chooseCountry": "اختر الدوله",
"selectAttachment": "اختيار مرفق",
"somethingWrong": "هناك خطأ ما",
"documentsUploaded": "تم ارفاق الملف بنجاح",
"update": "تحديث",
"termsOfService": "من خلال إنشاء حساب فإنك توافق على شروط الخدمة و\n سياسة الخصوصية",
"branchInfo": "معلومات الفرع و الخدمات",
"profileCompleted": "الملف الشخصي مكتمل",
"selectLocationMap": "اختر الموقع",
"licensesAndCertifications": "الرخص و الشهادات",
"completeProfile1": "اكمل الملف الشخصي 1/3",
"completeProfile2": "اكمل الملف الشخصي 2/3",
"completeProfile3": "اكمل الملف الشخصي 3/3",
"userInformation": "User Information",
"provider": "Provider",
"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 +147,100 @@ 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",
"pickAddress": "Pick Address",
"pickLocation": "Pick Location",
"save": "Save",
"defineServices": "Define Services",
"selectBranch ": "Select Branch ",
"selectServiceCategory": "Select Service Category",
"defineBranches": "Define Branches",
"defineProviders": "Define Providers",
"closeAccount": "Close Account",
"createBranch": "Create Branch",
"address": "Address",
"branchDescription": "Branch Description",
"branchName": "Branch Name",
"chooseCity": "Choose City",
"chooseCountry": "Choose Country",
"selectAttachment": "Select Attachment",
"somethingWrong": "Something went wrong",
"documentsUploaded": "Documents uploaded successfully",
"update": "Update",
"termsOfService": "By creating an account you agree to our Terms of Service and\n Privacy Policy",
"branchInfo": "Branch Info and Services",
"profileCompleted": "Profile Completed",
"selectLocationMap": "Select Location Map",
"licensesAndCertifications": "licenses & certifications",
"completeProfile1": "Complete Profile 1/3",
"completeProfile2": "Complete Profile 2/3",
"completeProfile3": "Complete Profile 3/3",
"userInformation": "User Information",
"provider": "Provider",
"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 +278,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_provider_app/classes/app_state.dart';
import 'package:car_provider_app/config/app_provider.dart'; import 'package:car_provider_app/config/app_provider.dart';
import 'package:car_provider_app/models/post_params_model.dart';
import 'package:car_provider_app/theme/app_theme.dart'; import 'package:car_provider_app/theme/app_theme.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -13,16 +15,25 @@ 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(),
), ),
); );
} }
// 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 { class MyApp extends StatelessWidget {
// This widget is the root of your application. //This widget is the root of your application.
MyApp() {} MyApp() {}
@override @override
@ -30,8 +41,11 @@ class MyApp extends StatelessWidget {
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,
@ -44,3 +58,26 @@ class MyApp extends StatelessWidget {
); );
} }
} }
// class MyApp extends StatelessWidget {
// // This widget is the root of your application.
// MyApp() {}
//
// @override
// Widget build(BuildContext context) {
// return AppProvider(
// child: Sizer(
// builder: (context, orientation, deviceType) {
// return MaterialApp(
// theme: AppTheme.getTheme(),
// debugShowCheckedModeBanner: false,
// localizationsDelegates: context.localizationDelegates,
// supportedLocales: context.supportedLocales,
// locale: context.locale,
// initialRoute: AppRoutes.initialRoute,
// routes: AppRoutes.routes,
// );
// },
// ),
// );
// }
// }

@ -0,0 +1,36 @@
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,7 +1,9 @@
import 'dart:async'; import 'dart:async';
import 'package:car_provider_app/generated/locale_keys.g.dart';
import 'package:car_provider_app/utils/navigator.dart'; import 'package:car_provider_app/utils/navigator.dart';
import 'package:car_provider_app/widgets/show_fill_button.dart'; import 'package:car_provider_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 'package:geocoding/geocoding.dart'; import 'package:geocoding/geocoding.dart';
import 'package:geolocator/geolocator.dart'; import 'package:geolocator/geolocator.dart';
@ -54,7 +56,7 @@ class _PickLocationPageState extends State<PickLocationPage> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
title: Text("Pick Location"), title: Text(LocaleKeys.pickLocation.tr()),
), ),
body: Container( body: Container(
child: Stack( child: Stack(
@ -91,7 +93,7 @@ class _PickLocationPageState extends State<PickLocationPage> {
child: Padding( child: Padding(
padding: const EdgeInsets.all(12.0), padding: const EdgeInsets.all(12.0),
child: ShowFillButton( child: ShowFillButton(
title: "Pick Address", title: LocaleKeys.pickAddress.tr(),
onPressed: () { onPressed: () {
widget.onPickAddress(latitude, longitude, _counter.value); widget.onPickAddress(latitude, longitude, _counter.value);
pop(context); pop(context);

@ -1,5 +1,6 @@
import 'package:car_provider_app/api/client/branch_api_client.dart'; import 'package:car_provider_app/api/client/branch_api_client.dart';
import 'package:car_provider_app/classes/utils.dart'; import 'package:car_provider_app/classes/utils.dart';
import 'package:car_provider_app/generated/locale_keys.g.dart';
import 'package:car_provider_app/models/m_response.dart'; import 'package:car_provider_app/models/m_response.dart';
import 'package:car_provider_app/models/profile/branch.dart'; import 'package:car_provider_app/models/profile/branch.dart';
import 'package:car_provider_app/models/profile/categroy.dart'; import 'package:car_provider_app/models/profile/categroy.dart';
@ -7,6 +8,7 @@ import 'package:car_provider_app/models/profile/services.dart';
import 'package:car_provider_app/models/user/country.dart'; import 'package:car_provider_app/models/user/country.dart';
import 'package:car_provider_app/widgets/dropdown/dropdow_field.dart'; import 'package:car_provider_app/widgets/dropdown/dropdow_field.dart';
import 'package:car_provider_app/widgets/show_fill_button.dart'; import 'package:car_provider_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 'package:car_provider_app/extensions/int_extensions.dart'; import 'package:car_provider_app/extensions/int_extensions.dart';
import 'package:car_provider_app/extensions/string_extensions.dart'; import 'package:car_provider_app/extensions/string_extensions.dart';
@ -61,7 +63,7 @@ class _CreateServicesPageState extends State<CreateServicesPage> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
title: Text("Define Services"), title: Text(LocaleKeys.defineServices.tr()),
), ),
body: Container( body: Container(
width: double.infinity, width: double.infinity,
@ -83,7 +85,7 @@ class _CreateServicesPageState extends State<CreateServicesPage> {
branchId = value.id; branchId = value.id;
fetchBrancheCategory(); fetchBrancheCategory();
}); });
}, list: countryDropList, hint: "Select Branch") }, list: countryDropList, hint: LocaleKeys.selectBranch.tr())
: CircularProgressIndicator(), : CircularProgressIndicator(),
12.height, 12.height,
(category != null) (category != null)
@ -95,7 +97,7 @@ class _CreateServicesPageState extends State<CreateServicesPage> {
categoryId = value.id; categoryId = value.id;
fetchServices(); fetchServices();
}); });
}, list: categoryDropList, hint: "Select Service Category") }, list: categoryDropList, hint: LocaleKeys.selectServiceCategory.tr())
: branchId == -1 : branchId == -1
? Container() ? Container()
: CircularProgressIndicator(), : CircularProgressIndicator(),
@ -137,7 +139,7 @@ class _CreateServicesPageState extends State<CreateServicesPage> {
Padding( Padding(
padding: const EdgeInsets.all(12.0), padding: const EdgeInsets.all(12.0),
child: ShowFillButton( child: ShowFillButton(
title: "Save", title: LocaleKeys.save.tr(),
width: double.infinity, width: double.infinity,
onPressed: () { onPressed: () {
createService(); createService();

@ -1,6 +1,8 @@
import 'package:car_provider_app/config/routes.dart'; import 'package:car_provider_app/config/routes.dart';
import 'package:car_provider_app/extensions/string_extensions.dart'; import 'package:car_provider_app/extensions/string_extensions.dart';
import 'package:car_provider_app/generated/locale_keys.g.dart';
import 'package:car_provider_app/utils/navigator.dart'; import 'package:car_provider_app/utils/navigator.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';
@ -9,7 +11,7 @@ class DealershipPage extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
title: Text("Dealership Setting"), title: Text(LocaleKeys.dealershipSettings.tr()),
), ),
body: Container( body: Container(
width: double.infinity, width: double.infinity,
@ -18,29 +20,29 @@ class DealershipPage extends StatelessWidget {
children: [ children: [
ListTile( ListTile(
leading: SvgPicture.asset("assets/icons/ic_settings.svg"), leading: SvgPicture.asset("assets/icons/ic_settings.svg"),
title: "General".toText12(), title: LocaleKeys.general.tr().toText12(),
), ),
ListTile( ListTile(
leading: SvgPicture.asset("assets/icons/ic_branchs.svg"), leading: SvgPicture.asset("assets/icons/ic_branchs.svg"),
title: "Define Branches".toText12(), title: LocaleKeys.defineBranches.tr().toText12(),
onTap: () { onTap: () {
navigateWithName(context, AppRoutes.defineBranch); navigateWithName(context, AppRoutes.defineBranch);
}, },
), ),
ListTile( ListTile(
leading: SvgPicture.asset("assets/icons/ic_services.svg"), leading: SvgPicture.asset("assets/icons/ic_services.svg"),
title: "Define Services".toText12(), title: LocaleKeys.defineServices.tr().toText12(),
onTap: () { onTap: () {
navigateWithName(context, AppRoutes.createServices); navigateWithName(context, AppRoutes.createServices);
}, },
), ),
ListTile( ListTile(
leading: SvgPicture.asset("assets/icons/ic_provider.svg"), leading: SvgPicture.asset("assets/icons/ic_provider.svg"),
title: "Define Providers".toText12(), title: LocaleKeys.defineProviders.tr().toText12(),
), ),
ListTile( ListTile(
leading: SvgPicture.asset("assets/icons/ic_close_account.svg"), leading: SvgPicture.asset("assets/icons/ic_close_account.svg"),
title: "Close Account".toText12(), title: LocaleKeys.closeAccount.tr().toText12(),
), ),
], ],
), ),

@ -4,6 +4,7 @@ import 'package:car_provider_app/classes/utils.dart';
import 'package:car_provider_app/config/routes.dart'; import 'package:car_provider_app/config/routes.dart';
import 'package:car_provider_app/extensions/int_extensions.dart'; import 'package:car_provider_app/extensions/int_extensions.dart';
import 'package:car_provider_app/extensions/string_extensions.dart'; import 'package:car_provider_app/extensions/string_extensions.dart';
import 'package:car_provider_app/generated/locale_keys.g.dart';
import 'package:car_provider_app/models/user/change_email.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/models/user/confirm_email.dart';
import 'package:car_provider_app/utils/navigator.dart'; import 'package:car_provider_app/utils/navigator.dart';
@ -12,6 +13,7 @@ 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/message_dialog.dart';
import 'package:car_provider_app/widgets/dialog/otp_dialog.dart'; import 'package:car_provider_app/widgets/dialog/otp_dialog.dart';
import 'package:car_provider_app/widgets/show_fill_button.dart'; import 'package:car_provider_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';
@ -97,7 +99,7 @@ class _ChangeEmailPageState extends State<ChangeEmailPage> {
showMDialog( showMDialog(
context, context,
child: MessageDialog( child: MessageDialog(
title: "Email is Changed Successfully", title: LocaleKeys.emailChangedSuccessfully.tr(),
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_provider_app/classes/utils.dart';
import 'package:car_provider_app/config/routes.dart'; import 'package:car_provider_app/config/routes.dart';
import 'package:car_provider_app/extensions/int_extensions.dart'; import 'package:car_provider_app/extensions/int_extensions.dart';
import 'package:car_provider_app/extensions/string_extensions.dart'; import 'package:car_provider_app/extensions/string_extensions.dart';
import 'package:car_provider_app/generated/locale_keys.g.dart';
import 'package:car_provider_app/models/user/change_mobile.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/models/user/confirm_mobile.dart';
import 'package:car_provider_app/utils/navigator.dart'; import 'package:car_provider_app/utils/navigator.dart';
@ -12,6 +13,7 @@ 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/message_dialog.dart';
import 'package:car_provider_app/widgets/dialog/otp_dialog.dart'; import 'package:car_provider_app/widgets/dialog/otp_dialog.dart';
import 'package:car_provider_app/widgets/show_fill_button.dart'; import 'package:car_provider_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,11 @@ 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: 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 +59,7 @@ class _ChangeMobilePageState extends State<ChangeMobilePage> {
12.height, 12.height,
TextFormField( TextFormField(
decoration: InputDecoration( decoration: InputDecoration(
hintText: "Enter Current Password", hintText: LocaleKeys.enterCurrentPassword.tr(),
hintStyle: TextStyle(color: Colors.grey), hintStyle: TextStyle(color: Colors.grey),
border: OutlineInputBorder( border: OutlineInputBorder(
borderRadius: const BorderRadius.all( borderRadius: const BorderRadius.all(
@ -70,7 +72,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 +100,7 @@ class _ChangeMobilePageState extends State<ChangeMobilePage> {
showMDialog( showMDialog(
context, context,
child: MessageDialog( child: MessageDialog(
title: "Phone Number Verified", title:LocaleKeys.phoneNumberVerified.tr(),
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_provider_app/api/client/user_api_client.dart';
import 'package:car_provider_app/classes/utils.dart'; import 'package:car_provider_app/classes/utils.dart';
import 'package:car_provider_app/config/routes.dart'; import 'package:car_provider_app/config/routes.dart';
import 'package:car_provider_app/generated/locale_keys.g.dart';
import 'package:car_provider_app/models/user/change_password.dart'; import 'package:car_provider_app/models/user/change_password.dart';
import 'package:car_provider_app/models/user/confirm_password.dart'; import 'package:car_provider_app/models/user/confirm_password.dart';
import 'package:car_provider_app/utils/navigator.dart'; import 'package:car_provider_app/utils/navigator.dart';
@ -13,6 +14,7 @@ import 'package:car_provider_app/widgets/show_fill_button.dart';
import 'package:car_provider_app/extensions/string_extensions.dart'; import 'package:car_provider_app/extensions/string_extensions.dart';
import 'package:car_provider_app/extensions/int_extensions.dart'; import 'package:car_provider_app/extensions/int_extensions.dart';
import 'package:car_provider_app/widgets/txt_field.dart'; import 'package:car_provider_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,11 @@ 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: 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 +62,7 @@ class _ChangePasswordPageState extends State<ChangePasswordPage> {
12.height, 12.height,
TextFormField( TextFormField(
decoration: InputDecoration( decoration: InputDecoration(
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 +75,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 +94,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 +103,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_provider_app/api/client/user_api_client.dart'; import 'package:car_provider_app/api/client/user_api_client.dart';
import 'package:car_provider_app/classes/utils.dart'; import 'package:car_provider_app/classes/utils.dart';
import 'package:car_provider_app/config/routes.dart'; import 'package:car_provider_app/config/routes.dart';
import 'package:car_provider_app/generated/locale_keys.g.dart';
import 'package:car_provider_app/models/m_response.dart'; import 'package:car_provider_app/models/m_response.dart';
import 'package:car_provider_app/models/user/basic_otp.dart'; import 'package:car_provider_app/models/user/basic_otp.dart';
import 'package:car_provider_app/models/user/register_user.dart'; import 'package:car_provider_app/models/user/register_user.dart';
@ -15,6 +16,7 @@ import 'package:car_provider_app/extensions/widget_extensions.dart';
import 'package:car_provider_app/extensions/int_extensions.dart'; import 'package:car_provider_app/extensions/int_extensions.dart';
import 'package:car_provider_app/extensions/string_extensions.dart'; import 'package:car_provider_app/extensions/string_extensions.dart';
import 'package:car_provider_app/widgets/txt_field.dart'; import 'package:car_provider_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("Thank you for registration, your request submitted by admin for verification, for more information you can contact the 11223344"); 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");
} }
} }
@ -199,13 +204,15 @@ class _CompleteProfilePageState extends State<CompleteProfilePage> {
} else if (lastName!.isEmpty) { } else if (lastName!.isEmpty) {
Utils.showToast("Surname is mandatory"); Utils.showToast("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("Please accept terms");
@ -213,4 +220,5 @@ class _CompleteProfilePageState extends State<CompleteProfilePage> {
} }
return isValid; return isValid;
} }
} }

@ -2,6 +2,7 @@ import 'package:car_provider_app/api/client/user_api_client.dart';
import 'package:car_provider_app/classes/utils.dart'; import 'package:car_provider_app/classes/utils.dart';
import 'package:car_provider_app/config/routes.dart'; import 'package:car_provider_app/config/routes.dart';
import 'package:car_provider_app/generated/locale_keys.g.dart';
import 'package:car_provider_app/models/user/confirm_password.dart'; import 'package:car_provider_app/models/user/confirm_password.dart';
import 'package:car_provider_app/utils/navigator.dart'; import 'package:car_provider_app/utils/navigator.dart';
import 'package:car_provider_app/utils/utils.dart'; import 'package:car_provider_app/utils/utils.dart';
@ -12,6 +13,7 @@ import 'package:car_provider_app/widgets/show_fill_button.dart';
import 'package:car_provider_app/extensions/string_extensions.dart'; import 'package:car_provider_app/extensions/string_extensions.dart';
import 'package:car_provider_app/extensions/int_extensions.dart'; import 'package:car_provider_app/extensions/int_extensions.dart';
import 'package:car_provider_app/widgets/txt_field.dart'; import 'package:car_provider_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,11 @@ class _ConfirmNewPasswordPageState extends State<ConfirmNewPasswordPage> {
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,
TextFormField( TextFormField(
decoration: InputDecoration( decoration: InputDecoration(
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 +61,7 @@ class _ConfirmNewPasswordPageState extends State<ConfirmNewPasswordPage> {
12.height, 12.height,
TextFormField( TextFormField(
decoration: InputDecoration( decoration: InputDecoration(
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 +74,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 +94,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");
} }
} }

@ -8,6 +8,7 @@ import 'package:car_provider_app/config/constants.dart';
import 'package:car_provider_app/config/routes.dart'; import 'package:car_provider_app/config/routes.dart';
import 'package:car_provider_app/extensions/int_extensions.dart'; import 'package:car_provider_app/extensions/int_extensions.dart';
import 'package:car_provider_app/extensions/string_extensions.dart'; import 'package:car_provider_app/extensions/string_extensions.dart';
import 'package:car_provider_app/generated/locale_keys.g.dart';
import 'package:car_provider_app/models/user/forget_password_otp_compare.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/navigator.dart';
import 'package:car_provider_app/utils/utils.dart'; import 'package:car_provider_app/utils/utils.dart';
@ -15,6 +16,7 @@ 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/button/show_image_button.dart';
import 'package:car_provider_app/widgets/dialog/dialogs.dart'; import 'package:car_provider_app/widgets/dialog/dialogs.dart';
import 'package:car_provider_app/widgets/dialog/otp_dialog.dart'; import 'package:car_provider_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: [

@ -6,6 +6,7 @@ import 'package:car_provider_app/classes/app_state.dart';
import 'package:car_provider_app/classes/utils.dart'; import 'package:car_provider_app/classes/utils.dart';
import 'package:car_provider_app/config/constants.dart'; import 'package:car_provider_app/config/constants.dart';
import 'package:car_provider_app/config/routes.dart'; import 'package:car_provider_app/config/routes.dart';
import 'package:car_provider_app/generated/locale_keys.g.dart';
import 'package:car_provider_app/models/user/login_password.dart'; import 'package:car_provider_app/models/user/login_password.dart';
import 'package:car_provider_app/models/user/register_user.dart'; import 'package:car_provider_app/models/user/register_user.dart';
import 'package:car_provider_app/models/user/user.dart'; import 'package:car_provider_app/models/user/user.dart';
@ -20,6 +21,7 @@ import 'package:car_provider_app/extensions/string_extensions.dart';
import 'package:car_provider_app/extensions/widget_extensions.dart'; import 'package:car_provider_app/extensions/widget_extensions.dart';
import 'package:car_provider_app/widgets/dialog/otp_dialog.dart'; import 'package:car_provider_app/widgets/dialog/otp_dialog.dart';
import 'package:car_provider_app/widgets/txt_field.dart'; import 'package:car_provider_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: [

@ -6,6 +6,7 @@ import 'package:car_provider_app/classes/app_state.dart';
import 'package:car_provider_app/classes/utils.dart'; import 'package:car_provider_app/classes/utils.dart';
import 'package:car_provider_app/config/constants.dart'; import 'package:car_provider_app/config/constants.dart';
import 'package:car_provider_app/config/routes.dart'; import 'package:car_provider_app/config/routes.dart';
import 'package:car_provider_app/generated/locale_keys.g.dart';
import 'package:car_provider_app/models/user/login_password.dart'; import 'package:car_provider_app/models/user/login_password.dart';
import 'package:car_provider_app/models/user/register_user.dart'; import 'package:car_provider_app/models/user/register_user.dart';
import 'package:car_provider_app/models/user/user.dart'; import 'package:car_provider_app/models/user/user.dart';
@ -20,6 +21,7 @@ import 'package:car_provider_app/extensions/string_extensions.dart';
import 'package:car_provider_app/extensions/widget_extensions.dart'; import 'package:car_provider_app/extensions/widget_extensions.dart';
import 'package:car_provider_app/widgets/dialog/otp_dialog.dart'; import 'package:car_provider_app/widgets/dialog/otp_dialog.dart';
import 'package:car_provider_app/widgets/txt_field.dart'; import 'package:car_provider_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_provider_app/api/client/user_api_client.dart';
import 'package:car_provider_app/classes/utils.dart'; import 'package:car_provider_app/classes/utils.dart';
import 'package:car_provider_app/config/constants.dart'; import 'package:car_provider_app/config/constants.dart';
import 'package:car_provider_app/config/routes.dart'; import 'package:car_provider_app/config/routes.dart';
import 'package:car_provider_app/generated/locale_keys.g.dart';
import 'package:car_provider_app/models/user/basic_otp.dart'; import 'package:car_provider_app/models/user/basic_otp.dart';
import 'package:car_provider_app/models/user/register_user.dart'; import 'package:car_provider_app/models/user/register_user.dart';
import 'package:car_provider_app/utils/navigator.dart'; import 'package:car_provider_app/utils/navigator.dart';
@ -15,6 +16,7 @@ import 'package:car_provider_app/extensions/int_extensions.dart';
import 'package:car_provider_app/extensions/string_extensions.dart'; import 'package:car_provider_app/extensions/string_extensions.dart';
import 'package:car_provider_app/extensions/widget_extensions.dart'; import 'package:car_provider_app/extensions/widget_extensions.dart';
import 'package:car_provider_app/widgets/txt_field.dart'; import 'package:car_provider_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,7 @@ class LoginVerifyAccountPage extends StatelessWidget {
showMDialog( showMDialog(
context, context,
child: MessageDialog( child: MessageDialog(
title: "Phone Number Verified", title: LocaleKeys.phoneNumberVerified.tr(),
onClick: () { onClick: () {
pop(context); pop(context);
navigateWithName(context, AppRoutes.profile1,arguments: user); navigateWithName(context, AppRoutes.profile1,arguments: user);

@ -1,17 +1,19 @@
import 'package:car_provider_app/config/routes.dart'; import 'package:car_provider_app/config/routes.dart';
import 'package:car_provider_app/generated/locale_keys.g.dart';
import 'package:car_provider_app/utils/navigator.dart'; import 'package:car_provider_app/utils/navigator.dart';
import 'package:car_provider_app/widgets/app_bar.dart'; import 'package:car_provider_app/widgets/app_bar.dart';
import 'package:car_provider_app/widgets/extensions/int_extensions.dart'; import 'package:car_provider_app/widgets/extensions/int_extensions.dart';
import 'package:car_provider_app/widgets/extensions/string_extensions.dart'; import 'package:car_provider_app/widgets/extensions/string_extensions.dart';
import 'package:car_provider_app/widgets/show_fill_button.dart'; import 'package:car_provider_app/widgets/show_fill_button.dart';
import 'package:car_provider_app/widgets/txt_field.dart'; import 'package:car_provider_app/widgets/txt_field.dart';
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class Profile1Page extends StatelessWidget { class Profile1Page 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,
@ -20,41 +22,41 @@ class Profile1Page extends StatelessWidget {
padding: EdgeInsets.all(40), padding: EdgeInsets.all(40),
child: Column( child: Column(
children: [ children: [
"Complete Profile 1/3".toText16(), LocaleKeys.completeProfile1.tr().toText16(),
"User Information".toText14(), LocaleKeys.userInformation.tr().toText14(),
12.height, 12.height,
TxtField( TxtField(
hint: "Provider", hint: LocaleKeys.provider.tr(),
), ),
12.height, 12.height,
TxtField( TxtField(
hint: "First Name", hint: LocaleKeys.firstName.tr(),
), ),
12.height, 12.height,
TxtField( TxtField(
hint: "Surname", hint:LocaleKeys.surname.tr(),
), ),
12.height, 12.height,
TxtField( TxtField(
hint: "Email", hint: LocaleKeys.email.tr(),
), ),
12.height, 12.height,
TxtField( TxtField(
hint: "Create Password", hint: LocaleKeys.createPassword.tr(),
), ),
12.height, 12.height,
TxtField( TxtField(
hint: "Confirm Password", hint:LocaleKeys.confirmPassword.tr(),
), ),
12.height, 12.height,
TxtField( TxtField(
hint: "Phone Number", hint: LocaleKeys.enterPhoneNumber.tr(),
), ),
50.height, 50.height,
"By creating an account you agree to our Terms of Service and Privacy Policy".toText14(), LocaleKeys.termsOfService.tr().toText14(),
16.height, 16.height,
ShowFillButton( ShowFillButton(
title: "Continue", title: LocaleKeys.continu.tr(),
width: double.infinity, width: double.infinity,
onPressed: () { onPressed: () {
navigateWithName(context, AppRoutes.profile2); navigateWithName(context, AppRoutes.profile2);

@ -1,4 +1,5 @@
import 'package:car_provider_app/config/routes.dart'; import 'package:car_provider_app/config/routes.dart';
import 'package:car_provider_app/generated/locale_keys.g.dart';
import 'package:car_provider_app/utils/navigator.dart'; import 'package:car_provider_app/utils/navigator.dart';
import 'package:car_provider_app/utils/utils.dart'; import 'package:car_provider_app/utils/utils.dart';
import 'package:car_provider_app/widgets/app_bar.dart'; import 'package:car_provider_app/widgets/app_bar.dart';
@ -6,13 +7,14 @@ import 'package:car_provider_app/widgets/extensions/int_extensions.dart';
import 'package:car_provider_app/widgets/extensions/string_extensions.dart'; import 'package:car_provider_app/widgets/extensions/string_extensions.dart';
import 'package:car_provider_app/widgets/show_fill_button.dart'; import 'package:car_provider_app/widgets/show_fill_button.dart';
import 'package:car_provider_app/widgets/txt_field.dart'; import 'package:car_provider_app/widgets/txt_field.dart';
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class Profile2Page extends StatelessWidget { class Profile2Page 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,
@ -21,8 +23,8 @@ class Profile2Page extends StatelessWidget {
padding: EdgeInsets.all(40), padding: EdgeInsets.all(40),
child: Column( child: Column(
children: [ children: [
"Complete Profile 2/3".toText16(), LocaleKeys.completeProfile2.tr().toText16(),
"licenses & certificatoins".toText14(), LocaleKeys.licensesAndCertifications.tr().toText14(),
12.height, 12.height,
TxtField( TxtField(
hint: "Commercial Record N.O", hint: "Commercial Record N.O",
@ -44,7 +46,7 @@ class Profile2Page extends StatelessWidget {
), ),
30.height, 30.height,
ShowFillButton( ShowFillButton(
title: "Save", title: LocaleKeys.save.tr(),
width: double.infinity, width: double.infinity,
onPressed: () { onPressed: () {
navigateWithName(context, AppRoutes.profile3); navigateWithName(context, AppRoutes.profile3);

@ -1,3 +1,4 @@
import 'package:car_provider_app/generated/locale_keys.g.dart';
import 'package:car_provider_app/widgets/app_bar.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/dialogs.dart';
import 'package:car_provider_app/widgets/dialog/message_dialog.dart'; import 'package:car_provider_app/widgets/dialog/message_dialog.dart';
@ -6,13 +7,14 @@ import 'package:car_provider_app/widgets/extensions/int_extensions.dart';
import 'package:car_provider_app/widgets/extensions/string_extensions.dart'; import 'package:car_provider_app/widgets/extensions/string_extensions.dart';
import 'package:car_provider_app/widgets/show_fill_button.dart'; import 'package:car_provider_app/widgets/show_fill_button.dart';
import 'package:car_provider_app/widgets/txt_field.dart'; import 'package:car_provider_app/widgets/txt_field.dart';
import 'package:easy_localization/src/public_ext.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class Profile3Page extends StatelessWidget { class Profile3Page 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,
@ -22,8 +24,8 @@ class Profile3Page extends StatelessWidget {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
"Complete Profile 3/3".toText16(), LocaleKeys.completeProfile3.tr().toText16(),
"Branch Info and Services".toText14(), LocaleKeys.branchInfo.tr().toText14(),
12.height, 12.height,
// DropdownField( // DropdownField(
// hint: "Country", // hint: "Country",
@ -34,21 +36,21 @@ class Profile3Page extends StatelessWidget {
// ), // ),
12.height, 12.height,
TxtField( TxtField(
hint: "Address", hint: LocaleKeys.address.tr(),
maxLines: 5, maxLines: 5,
), ),
12.height, 12.height,
"Select Location Map".toText14(), LocaleKeys.selectLocationMap.tr().toText14(),
12.height, 12.height,
Image.asset("assets/images/bn_map.png"), Image.asset("assets/images/bn_map.png"),
50.height, 50.height,
ShowFillButton( ShowFillButton(
title: "Save", title: LocaleKeys.save.tr(),
width: double.infinity, width: double.infinity,
onPressed: () { onPressed: () {
showMDialog(context, showMDialog(context,
child: MessageDialog( child: MessageDialog(
title: "Profile Completed", title: LocaleKeys.profileCompleted.tr(),
)); ));
}, },
), ),

@ -1,4 +1,5 @@
import 'package:car_provider_app/config/routes.dart'; import 'package:car_provider_app/config/routes.dart';
import 'package:car_provider_app/generated/locale_keys.g.dart';
import 'package:car_provider_app/utils/navigator.dart'; import 'package:car_provider_app/utils/navigator.dart';
import 'package:car_provider_app/utils/utils.dart'; import 'package:car_provider_app/utils/utils.dart';
import 'package:car_provider_app/widgets/app_bar.dart'; import 'package:car_provider_app/widgets/app_bar.dart';
@ -6,23 +7,24 @@ import 'package:car_provider_app/widgets/show_fill_button.dart';
import 'package:car_provider_app/extensions/string_extensions.dart'; import 'package:car_provider_app/extensions/string_extensions.dart';
import 'package:car_provider_app/extensions/int_extensions.dart'; import 'package:car_provider_app/extensions/int_extensions.dart';
import 'package:car_provider_app/extensions/widget_extensions.dart'; import 'package:car_provider_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_provider_app/config/routes.dart'; import 'package:car_provider_app/config/routes.dart';
import 'package:car_provider_app/extensions/string_extensions.dart'; import 'package:car_provider_app/extensions/string_extensions.dart';
import 'package:car_provider_app/generated/locale_keys.g.dart';
import 'package:car_provider_app/utils/navigator.dart'; import 'package:car_provider_app/utils/navigator.dart';
import 'package:car_provider_app/utils/utils.dart'; import 'package:car_provider_app/utils/utils.dart';
import 'package:car_provider_app/extensions/widget_extensions.dart'; import 'package:car_provider_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_provider_app/classes/utils.dart'; import 'package:car_provider_app/classes/utils.dart';
import 'package:car_provider_app/config/constants.dart'; import 'package:car_provider_app/config/constants.dart';
import 'package:car_provider_app/config/routes.dart'; import 'package:car_provider_app/config/routes.dart';
import 'package:car_provider_app/generated/locale_keys.g.dart';
import 'package:car_provider_app/models/user/forget_password_otp_compare.dart'; import 'package:car_provider_app/models/user/forget_password_otp_compare.dart';
import 'package:car_provider_app/models/user/forget_password_otp_request.dart'; import 'package:car_provider_app/models/user/forget_password_otp_request.dart';
import 'package:car_provider_app/utils/navigator.dart'; import 'package:car_provider_app/utils/navigator.dart';
@ -16,6 +17,7 @@ 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/message_dialog.dart';
import 'package:car_provider_app/widgets/dialog/otp_dialog.dart'; import 'package:car_provider_app/widgets/dialog/otp_dialog.dart';
import 'package:car_provider_app/widgets/txt_field.dart'; import 'package:car_provider_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,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=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
@ -62,6 +64,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,

@ -301,13 +301,6 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.12.11" version: "0.12.11"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.3"
meta: meta:
dependency: transitive dependency: transitive
description: description:
@ -578,7 +571,7 @@ packages:
name: test_api name: test_api
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.4.8" version: "0.4.3"
typed_data: typed_data:
dependency: transitive dependency: transitive
description: description:

@ -0,0 +1,132 @@
{
"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" : "اضف الهاتف",
"onlyProviderApp": "نأسف هذا التطبيق فقط لمقدمي الخدمات",
"imageUploaded" : "تم تحميل الصوره",
"fileLarger" : "1KB حجم الملف اكبر من",
"account" : "الحساب",
"edit" : "تعديل",
"imageDeleted" : "تم حذف الصوره",
"dashboard" : "الصفحه الرئيسيه",
"pickAddress" : "اختر العنوان",
"pickLocation" : "اختر الموقع",
"save" : "حفظ",
"defineServices" : "تحديد الخدمات",
"selectBranch " : "اختر الفرع",
"selectServiceCategory" : "اختر فئة الخدمة",
"defineBranches" : "تحديد الفروع",
"defineProviders":"تحديد الموفرين",
"closeAccount": "اغلاق الحساب",
"createBranch" : "انشاء فرع",
"address": "العنوان",
"branchDescription": "وصف الفرع",
"branchName": "اسم الفرع",
"chooseCity": "اختر المدينه",
"chooseCountry": "اختر الدوله",
"selectAttachment":"اختيار مرفق",
"somethingWrong" : "هناك خطأ ما",
"documentsUploaded" : "تم ارفاق الملف بنجاح",
"update": "تحديث",
"termsOfService":"من خلال إنشاء حساب فإنك توافق على شروط الخدمة و\n سياسة الخصوصية",
"branchInfo": "معلومات الفرع و الخدمات",
"profileCompleted": "الملف الشخصي مكتمل",
"selectLocationMap": "اختر الموقع",
"licensesAndCertifications" : "الرخص و الشهادات",
"completeProfile1" : "اكمل الملف الشخصي 1/3",
"completeProfile2" : "اكمل الملف الشخصي 2/3",
"completeProfile3" : "اكمل الملف الشخصي 3/3",
"userInformation": "معلومات المتسخدم",
"provider": "Provider",
"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,98 @@
{ {
"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",
"pickAddress" : "Pick Address",
"pickLocation" : "Pick Location",
"save" : "Save",
"defineServices" : "Define Services",
"selectBranch " : "Select Branch ",
"selectServiceCategory" : "Select Service Category",
"defineBranches" : "Define Branches",
"defineProviders":"Define Providers",
"closeAccount": "Close Account",
"createBranch" : "Create Branch",
"address": "Address",
"branchDescription": "Branch Description",
"branchName": "Branch Name",
"chooseCity": "Choose City",
"chooseCountry": "Choose Country",
"selectAttachment":"Select Attachment",
"somethingWrong" : "Something went wrong",
"documentsUploaded" : "Documents uploaded successfully",
"update": "Update",
"termsOfService":"By creating an account you agree to our Terms of Service and\n Privacy Policy",
"branchInfo": "Branch Info and Services",
"profileCompleted": "Profile is Completed",
"selectLocationMap": "Select Location Map",
"licensesAndCertifications" : "licenses & certifications",
"completeProfile1" : "Complete Profile 1/3",
"completeProfile2" : "Complete Profile 2/3",
"completeProfile3" : "Complete Profile 3/3",
"userInformation": "User Information",
"provider": "Provider",
"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