From 4e2b0950e86d4adc1120b90fcaca16f33480bac1 Mon Sep 17 00:00:00 2001 From: "mirza.shafique" Date: Sun, 26 Mar 2023 13:05:50 +0300 Subject: [PATCH 1/2] keys gen --- lib/generated/codegen_loader.g.dart | 364 ++++++++++++++++++++++++++++ lib/generated/locale_keys.g.dart | 154 ++++++++++++ 2 files changed, 518 insertions(+) create mode 100644 lib/generated/codegen_loader.g.dart create mode 100644 lib/generated/locale_keys.g.dart diff --git a/lib/generated/codegen_loader.g.dart b/lib/generated/codegen_loader.g.dart new file mode 100644 index 0000000..2d75e3e --- /dev/null +++ b/lib/generated/codegen_loader.g.dart @@ -0,0 +1,364 @@ +// DO NOT EDIT. This is code generated via package:easy_localization/generate.dart + +// ignore_for_file: prefer_single_quotes + +import 'dart:ui'; + +import 'package:easy_localization/easy_localization.dart' show AssetLoader; + +class CodegenLoader extends AssetLoader{ + const CodegenLoader(); + + @override + Future> load(String fullPath, Locale locale ) { + return Future.value(mapLocales[locale.toString()]); + } + + static const Map ar_SA = { + "firstTimeLogIn": "تسجيل الدخول لأول مره", + "signUp": "التسجيل", + "changeMobile": "تغيير رقم الجوال", + "notifications": "الاشعارات", + "general": "عام", + "defineLicences": "تحديد الرخص", + "dealershipSettings": "اعدادات البيع", + "changePassword": "تغيير كلمة المرور", + "retrievePassword": "استرجاع كلمة المرور", + "changeEmail": "تغيير الايميل", + "verify": "تحقق", + "verified": "تم التحقق", + "signOut": "تسجيل خروج", + "enterEmail": "ادخل الايميل", + "enterNewEmail": "ادخل ايميل جديد", + "enterCurrentPassword": "كلمة المرور الحاليه", + "enterNewPassword": "كلمة المرور الجديده", + "enterOldPassword": "كلمة المرور القديمه", + "confirm": "تأكيد", + "enterNewPhoneNumber": "رقم جوال جديد", + "completeProfile": "الملف الشخصي", + "continu": "استمرار", + "confirmPassword": "تأكيد كلمة المرور", + "createPassword": "انشاء كلمة مرور جديده", + "email": "ايميل", + "firstName": "الأسم الأول *", + "surname": "اسم العائله *", + "confirmPass": "تأكيد كلمة المرور *", + "createPass": "انشاء كلمة مرور جديده *", + "newPassword": " كلمة مرور جديده", + "forgetPassword": "نسيت كلمة المرور", + "forgetPasswordRecover": "نسيت كلمة المرور؟ استعادة", + "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": "من خلال إنشاء حساب فإنك توافق على", + "userInformation": "معلومات المتسخدم", + "faceRecognition": "تحقق مع بصمة الوجه", + "fingerPrint": "تحقق مع بصمة الاصبع", + "whatsapp": "تحقق مع Whatsapp", + "SMS": "رسائل قصيره", + "selectRole": "حدد الدور", + "userRoleOrTitle": "عنوان المستخدم", + "codeSentToEmail": "تم ارسال الرمز للايميل", + "number": "موبايل", + "english": "English", + "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", + "welcomeDes": "أنت مكان واحد لكل ما تحتاجه سيارتك", + "log_in": "تسجيل الدخول", + "send": "إرسال", + "phoneNumber": "رقم الهاتف", + "forgetPasswordQ": "نسيت كلمة المرور؟", + "recover": "استعادة", + "retrivePassword": "استرجع كلمة المرور بإحدى الطرق التالية", + "retriveOnPhone": "سوف نرسل الاختيار إلى رقم هاتفك المحمول المسجل", + "retriveOnEmail": "سوف نرسل الاختيار إلى عنوان بريدك الإلكتروني المسجل", + "enterPhoneForVerfication": "الرجاء إدخال رقم هاتفك وسنرسل لك رمز التحقق", + "welcomeBack": "مرحبًا بعودتك!!!", + "selectYourCountry": "اختر بلدك", + "chooseCountry": "اختر الدوله", + "terms": "بنود الخدمة وخصوصية السياسة", + "profileMsg": "أدخل التفاصيل أدناه وأكمل معلومات الملف الشخصي", + "save": "حفظ", + "insert_otp_code": "ادخل الرمز", + "type_code": "الرجاء كتابة الرمز الذي أرسلناه إلى", + "resend_code": "أعد إرسال الرمز", + "check_code": "التحقق من الشفرة", + "time_will_expire": "إعادة إرسال الرمز بتنسيق", + "sec": "ثانية", + "providers": "الموفرون", + "appointments": "تعيينات", + "home": "بيت", + "ads": "إعلانات", + "settings": "إعدادات", + "view_all": "مشاهدة الكل", + "my_active_Ads": "إعلاناتي النشطة", + "recommended_ads": "الإعلانات الموصى بها", + "upcoming_appointment": "الموعد القادم", + "my_service_providers": "مزودي الخدمة الجدد", + "appointment_details": "تفاصيل الموعد", + "no_city_available": "لا توجد مدينة متاحة لهذا البلد", + "branch_created": "تم إنشاء الفرع بنجاح", + "branch_updated": "تم تحديث الفرع بنجاح", + "branch_deleted": "تم حذف الفرع بنجاح", + "dashboard_main": "لوحة القيادة / الصفحة الرئيسية", + "logo_brand": "الشعار / العلامة التجارية", + "remove": "إزالة", + "no_branch": "لم يتم إضافة فرع حتى الآن", + "login_once": "الرجاء تسجيل الدخول مرة واحدة", + "defineLicenese": "تحميل التراخيص والشهادات", + "description": "وصف", + "attachFile": "أرفق ملف", + "branchLocation": "معلومات الفرع والموقع", + "tapToEdit": "انقر للتعديل", + "myServiceBranches": "فروع خدمتي", + "enter_licence_detail": "الرجاء إدخال تفاصيل السجلات التجارية وإرفاق صور الترخيص", + "country": "بلد", + "city": "مدينة", + "editServices": "تحرير الخدمات", + "maintenance": "صيانة", + "accessories_modifications": "الملحقات والتعديلات", + "my_recent_providers": "مزودي الخدمة الجدد", + "my_active_ads": "إعلاناتي النشطة", + "recommended_Ads": "الإعلانات الموصى بها" +}; +static const Map en_US = { + "firstTimeLogIn": "First Time Log In", + "signUp": "Sign 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", + "verified": "Verified", + "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", + "forgetPasswordRecover": "Forget Password? Recover", + "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", + "userInformation": "User Information", + "faceRecognition": "Face Recognition", + "fingerPrint": "Finger Print", + "whatsapp": "With Whatsapp", + "SMS": "With SMS", + "selectRole": "Select Role", + "userRoleOrTitle": "User role or title", + "codeSentToEmail": "Code is sent to email", + "number": "Number", + "english": "عربي", + "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", + "welcomeDes": "You one stop place all your car needs", + "log_in": "Log In", + "send": "Send", + "phoneNumber": "Phone Number", + "forgetPasswordQ": "Forget Password?", + "recover": "Recover", + "retrivePassword": "Retrive password by one of following method", + "retriveOnPhone": "We will send the opt to your registered mobile number", + "retriveOnEmail": "We will send the opt to your registered email address", + "enterPhoneForVerfication": "Please enter your phone number We will send you the verification code", + "welcomeBack": "Welcome Back!!!", + "selectYourCountry": "Select Your Country", + "chooseCountry": "Choose Country", + "terms": "Terms of Service and Privacy Policy", + "profileMsg": "Enter the details below and complete the profile info", + "save": "Save", + "insert_otp_code": "Enter the code", + "type_code": "Please type the code we sent to", + "resend_code": "Resend Code", + "check_code": "Check Code", + "time_will_expire": "Resend code in", + "sec": "sec", + "providers": "Providers", + "appointments": "Appointments", + "home": "Home", + "ads": "Ads", + "settings": "Settings", + "view_all": "view all", + "my_active_Ads": "My Active Ads", + "recommended_ads": "Recommended Ads", + "upcoming_appointment": "Upcoming Appointment", + "my_service_providers": "My Recent Service Providers", + "appointment_details": "Appointment Details", + "no_city_available": "No City Available for this country", + "branch_created": "Branch is successfully created", + "branch_updated": "Branch is successfully Updated", + "branch_deleted": "Branch is successfully Deleted", + "dashboard_main": "Dashboard/Main Page", + "logo_brand": "Logo/Brand", + "remove": "Remove", + "no_branch": "No Branch Added Yet", + "login_once": "Please login once", + "defineLicenese": "Upload Licenses and Certificates", + "description": "Description", + "attachFile": "Attach File", + "branchLocation": "Branch info and Location", + "tapToEdit": "Tap to edit", + "myServiceBranches": "My Service Branches", + "enter_licence_detail": "Please enter the detail for commercial records and attach the license images", + "country": "country", + "city": "city", + "editServices": "Edit Services", + "maintenance": "Maintenance", + "accessories_modifications": "Accessories and Modifications", + "my_recent_providers": "My Recent Service Providers", + "my_active_ads": "My Active Ads", + "recommended_Ads": "Recommended Ads" +}; +static const Map> mapLocales = {"ar_SA": ar_SA, "en_US": en_US}; +} diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart new file mode 100644 index 0000000..9c1db61 --- /dev/null +++ b/lib/generated/locale_keys.g.dart @@ -0,0 +1,154 @@ +// DO NOT EDIT. This is code generated via package:easy_localization/generate.dart + +abstract class LocaleKeys { + static const firstTimeLogIn = 'firstTimeLogIn'; + static const signUp = 'signUp'; + static const changeMobile = 'changeMobile'; + static const notifications = 'notifications'; + static const general = 'general'; + static const defineLicences = 'defineLicences'; + static const dealershipSettings = 'dealershipSettings'; + static const changePassword = 'changePassword'; + static const retrievePassword = 'retrievePassword'; + static const changeEmail = 'changeEmail'; + static const verify = 'verify'; + static const verified = 'verified'; + static const signOut = 'signOut'; + static const enterEmail = 'enterEmail'; + static const enterNewEmail = 'enterNewEmail'; + static const enterCurrentPassword = 'enterCurrentPassword'; + static const enterNewPassword = 'enterNewPassword'; + static const enterOldPassword = 'enterOldPassword'; + static const confirm = 'confirm'; + static const enterNewPhoneNumber = 'enterNewPhoneNumber'; + static const completeProfile = 'completeProfile'; + static const continu = 'continu'; + static const confirmPassword = 'confirmPassword'; + static const createPassword = 'createPassword'; + static const email = 'email'; + static const firstName = 'firstName'; + static const surname = 'surname'; + static const confirmPass = 'confirmPass'; + static const createPass = 'createPass'; + static const newPassword = 'newPassword'; + static const forgetPassword = 'forgetPassword'; + static const forgetPasswordRecover = 'forgetPasswordRecover'; + static const editAccount = 'editAccount'; + static const change = 'change'; + static const verifyAccount = 'verifyAccount'; + static const login = 'login'; + static const welcomeMessage = 'welcomeMessage'; + static const forgetPass = 'forgetPass'; + static const enterPhoneNumber = 'enterPhoneNumber'; + static const phoneNumberVerified = 'phoneNumberVerified'; + static const verifyNewPassword = 'verifyNewPassword'; + static const EnterPass = 'EnterPass'; + static const alreadySigned = 'alreadySigned'; + static const emailChangedSuccessfully = 'emailChangedSuccessfully'; + static const passwordIsUpdated = 'passwordIsUpdated'; + static const passwordShouldContains = 'passwordShouldContains'; + static const successfullyRegistered = ' successfullyRegistered'; + static const pleaseEnterSamePassword = 'pleaseEnterSamePassword'; + static const firstNameMandatory = 'firstNameMandatory'; + static const surnameNameMandatory = 'surnameNameMandatory'; + static const passwordNameMandatory = 'passwordNameMandatory'; + static const enterValidEmail = 'enterValidEmail'; + static const pleaseAcceptTerms = 'pleaseAcceptTerms'; + static const emailVerified = 'emailVerified'; + static const selectMethod = 'selectMethod'; + static const emailAddress = 'emailAddress'; + static const loginSelection = 'loginSelection'; + static const selectCountryCode = 'selectCountryCode'; + static const selectProviderRole = 'selectProviderRole'; + static const addPhoneNo = 'addPhoneNo'; + static const onlyCustomerApp = 'onlyCustomerApp'; + static const imageUploaded = 'imageUploaded'; + static const fileLarger = 'fileLarger'; + static const account = 'account'; + static const edit = 'edit'; + static const imageDeleted = 'imageDeleted'; + static const dashboard = 'dashboard'; + static const termsOfService = 'termsOfService'; + static const userInformation = 'userInformation'; + static const faceRecognition = 'faceRecognition'; + static const fingerPrint = 'fingerPrint'; + static const whatsapp = 'whatsapp'; + static const SMS = 'SMS'; + static const selectRole = 'selectRole'; + static const userRoleOrTitle = 'userRoleOrTitle'; + static const codeSentToEmail = 'codeSentToEmail'; + static const number = 'number'; + static const english = 'english'; + static const title = 'title'; + static const msg = 'msg'; + static const msg_named = 'msg_named'; + static const clickMe = 'clickMe'; + static const profile_reset_password_label = 'profile.reset_password.label'; + static const profile_reset_password_username = 'profile.reset_password.username'; + static const profile_reset_password_password = 'profile.reset_password.password'; + static const profile_reset_password = 'profile.reset_password'; + static const profile = 'profile'; + static const clicked = 'clicked'; + static const amount = 'amount'; + static const gender_with_arg = 'gender.with_arg'; + static const gender = 'gender'; + static const reset_locale = 'reset_locale'; + static const welcomeDes = 'welcomeDes'; + static const log_in = 'log_in'; + static const send = 'send'; + static const phoneNumber = 'phoneNumber'; + static const forgetPasswordQ = 'forgetPasswordQ'; + static const recover = 'recover'; + static const retrivePassword = 'retrivePassword'; + static const retriveOnPhone = 'retriveOnPhone'; + static const retriveOnEmail = 'retriveOnEmail'; + static const enterPhoneForVerfication = 'enterPhoneForVerfication'; + static const welcomeBack = 'welcomeBack'; + static const selectYourCountry = 'selectYourCountry'; + static const chooseCountry = 'chooseCountry'; + static const terms = 'terms'; + static const profileMsg = 'profileMsg'; + static const save = 'save'; + static const insert_otp_code = 'insert_otp_code'; + static const type_code = 'type_code'; + static const resend_code = 'resend_code'; + static const check_code = 'check_code'; + static const time_will_expire = 'time_will_expire'; + static const sec = 'sec'; + static const providers = 'providers'; + static const appointments = 'appointments'; + static const home = 'home'; + static const ads = 'ads'; + static const settings = 'settings'; + static const view_all = 'view_all'; + static const my_active_Ads = 'my_active_Ads'; + static const recommended_ads = 'recommended_ads'; + static const upcoming_appointment = 'upcoming_appointment'; + static const my_service_providers = 'my_service_providers'; + static const appointment_details = 'appointment_details'; + static const no_city_available = 'no_city_available'; + static const branch_created = 'branch_created'; + static const branch_updated = 'branch_updated'; + static const branch_deleted = 'branch_deleted'; + static const dashboard_main = 'dashboard_main'; + static const logo_brand = 'logo_brand'; + static const remove = 'remove'; + static const no_branch = 'no_branch'; + static const login_once = 'login_once'; + static const defineLicenese = 'defineLicenese'; + static const description = 'description'; + static const attachFile = 'attachFile'; + static const branchLocation = 'branchLocation'; + static const tapToEdit = 'tapToEdit'; + static const myServiceBranches = 'myServiceBranches'; + static const enter_licence_detail = 'enter_licence_detail'; + static const country = 'country'; + static const city = 'city'; + static const editServices = 'editServices'; + static const maintenance = 'maintenance'; + static const accessories_modifications = 'accessories_modifications'; + static const my_recent_providers = 'my_recent_providers'; + static const my_active_ads = 'my_active_ads'; + static const recommended_Ads = 'recommended_Ads'; + +} From f2ccd5ef26a1e5a4bb9485c01e56e24ddc085f10 Mon Sep 17 00:00:00 2001 From: "mirza.shafique" Date: Tue, 28 Mar 2023 11:12:44 +0300 Subject: [PATCH 2/2] Common Update 1.0 --- assets/icons/ic_edit.svg | 3 + lib/classes/consts.dart | 2 +- lib/extensions/string_extensions.dart | 17 +++- lib/theme/colors.dart | 2 +- lib/views/user/change_email_page.dart | 2 +- lib/views/user/change_mobile_page.dart | 2 +- lib/views/user/change_password_page.dart | 2 +- lib/views/user/complete_profile_page.dart | 2 +- lib/views/user/confirm_new_password.dart | 2 +- lib/views/user/confirm_new_password_page.dart | 10 +- lib/views/user/forget_password_page.dart | 2 +- lib/views/user/login_with_password_page.dart | 2 +- lib/views/user/register_page.dart | 2 +- lib/views/user/register_provider_page.dart | 2 +- lib/views/user/register_selection_page.dart | 2 +- .../{ => button}/show_card_buttton.dart | 2 +- .../{ => button}/show_fill_button.dart | 29 +++--- lib/widgets/common_widgets/ad_widget.dart | 1 - lib/widgets/common_widgets/app_bar.dart | 94 ++++++++++++------- lib/widgets/dialog/message_dialog.dart | 2 +- lib/widgets/dialog/otp_dialog.dart | 2 +- lib/widgets/extensions/extensions_widget.dart | 59 +++++++----- lib/widgets/tab/menu_tabs.dart | 64 +++++++++++++ 23 files changed, 214 insertions(+), 93 deletions(-) create mode 100644 assets/icons/ic_edit.svg rename lib/widgets/{ => button}/show_card_buttton.dart (90%) rename lib/widgets/{ => button}/show_fill_button.dart (71%) create mode 100644 lib/widgets/tab/menu_tabs.dart diff --git a/assets/icons/ic_edit.svg b/assets/icons/ic_edit.svg new file mode 100644 index 0000000..f99c722 --- /dev/null +++ b/assets/icons/ic_edit.svg @@ -0,0 +1,3 @@ + + + diff --git a/lib/classes/consts.dart b/lib/classes/consts.dart index 972c57c..1e040cd 100644 --- a/lib/classes/consts.dart +++ b/lib/classes/consts.dart @@ -100,7 +100,7 @@ class MyAssets { static String bcIntro = "${assetPath}images/bc_intro.svg"; static String bnLogo = "${assetPath}images/bn_logo.svg"; static String icCar = "${assetPath}images/ic_car.svg"; - static String icEdit = "${assetPath}images/ic_edit.svg"; + static String icEdit = "${assetPath}icons/ic_edit.svg"; static String icEmail = "${assetPath}images/ic_email.svg"; static String icLock = "${assetPath}images/ic_lock.svg"; static String icLogout = "${assetPath}images/ic_logout.svg"; diff --git a/lib/extensions/string_extensions.dart b/lib/extensions/string_extensions.dart index ac17df6..f899df1 100644 --- a/lib/extensions/string_extensions.dart +++ b/lib/extensions/string_extensions.dart @@ -1,13 +1,23 @@ - import 'package:flutter/cupertino.dart'; import 'package:intl/intl.dart'; import 'package:mc_common_app/theme/colors.dart'; +import 'package:auto_size_text/auto_size_text.dart'; extension EmailValidator on String { - Widget toText({Color? color, bool isBold = false, double? fontSize, bool isUnderLine = false, TextDecoration? textDecoration, double letterSpacing = -0.4, TextAlign? textAlign, double? height}) => - Text( + Widget toText( + {Color? color, + bool isBold = false, + double? fontSize, + bool isUnderLine = false, + TextDecoration? textDecoration, + double letterSpacing = -0.4, + TextAlign? textAlign, + double? height, + int? maxLines}) => + AutoSizeText( this, textAlign: textAlign, + maxLines: maxLines, style: TextStyle( height: height, decoration: isUnderLine ? TextDecoration.underline : textDecoration ?? TextDecoration.none, @@ -18,7 +28,6 @@ extension EmailValidator on String { ), ); - bool isValidEmail() { return RegExp(r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$').hasMatch(this); } diff --git a/lib/theme/colors.dart b/lib/theme/colors.dart index b48a406..8eb2538 100644 --- a/lib/theme/colors.dart +++ b/lib/theme/colors.dart @@ -6,10 +6,10 @@ class MyColors { static const Color accentColor = Colors.blue; static const Color lightTextColor = Color(0xff969696); static const Color textColor = Color(0xff777777); + static const Color darkTextColor = Color(0xff28323A); static const Color textFieldColor = Color(0xffF3F5F7); static const Color darkIconColor = Color(0xff28323A); static const Color lightIconColor = Color(0xff767676); - static const Color darkTextColor = Color(0xff2B353E); static const Color normalTextColor = Color(0xff5A5A5A); static const Color gradiantStartColor = Color(0xff33c0a5); static const Color gradiantEndColor = Color(0xff259db7); diff --git a/lib/views/user/change_email_page.dart b/lib/views/user/change_email_page.dart index ad85777..7eee14a 100644 --- a/lib/views/user/change_email_page.dart +++ b/lib/views/user/change_email_page.dart @@ -3,7 +3,7 @@ import 'package:mc_common_app/extensions/string_extensions.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/view_models/user_view_model.dart'; import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; -import 'package:mc_common_app/widgets/show_fill_button.dart'; +import 'package:mc_common_app/widgets/button/show_fill_button.dart'; import 'package:mc_common_app/widgets/txt_field.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; diff --git a/lib/views/user/change_mobile_page.dart b/lib/views/user/change_mobile_page.dart index 3c66c81..06cd26a 100644 --- a/lib/views/user/change_mobile_page.dart +++ b/lib/views/user/change_mobile_page.dart @@ -3,7 +3,7 @@ import 'package:mc_common_app/extensions/string_extensions.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/view_models/user_view_model.dart'; import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; -import 'package:mc_common_app/widgets/show_fill_button.dart'; +import 'package:mc_common_app/widgets/button/show_fill_button.dart'; import 'package:mc_common_app/widgets/txt_field.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; diff --git a/lib/views/user/change_password_page.dart b/lib/views/user/change_password_page.dart index 9709867..45c8223 100644 --- a/lib/views/user/change_password_page.dart +++ b/lib/views/user/change_password_page.dart @@ -3,7 +3,7 @@ import 'package:mc_common_app/extensions/string_extensions.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/view_models/user_view_model.dart'; import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; -import 'package:mc_common_app/widgets/show_fill_button.dart'; +import 'package:mc_common_app/widgets/button/show_fill_button.dart'; import 'package:mc_common_app/widgets/txt_field.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; diff --git a/lib/views/user/complete_profile_page.dart b/lib/views/user/complete_profile_page.dart index 562c7d6..af11e10 100644 --- a/lib/views/user/complete_profile_page.dart +++ b/lib/views/user/complete_profile_page.dart @@ -5,7 +5,7 @@ import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/models/user/register_user.dart'; import 'package:mc_common_app/view_models/user_view_model.dart'; import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; -import 'package:mc_common_app/widgets/show_fill_button.dart'; +import 'package:mc_common_app/widgets/button/show_fill_button.dart'; import 'package:mc_common_app/widgets/txt_field.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; diff --git a/lib/views/user/confirm_new_password.dart b/lib/views/user/confirm_new_password.dart index ef5a754..b676e45 100644 --- a/lib/views/user/confirm_new_password.dart +++ b/lib/views/user/confirm_new_password.dart @@ -4,7 +4,7 @@ import 'package:mc_common_app/extensions/int_extensions.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/view_models/user_view_model.dart'; import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; -import 'package:mc_common_app/widgets/show_fill_button.dart'; +import 'package:mc_common_app/widgets/button/show_fill_button.dart'; import 'package:mc_common_app/widgets/txt_field.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; diff --git a/lib/views/user/confirm_new_password_page.dart b/lib/views/user/confirm_new_password_page.dart index ac3287f..94032a6 100644 --- a/lib/views/user/confirm_new_password_page.dart +++ b/lib/views/user/confirm_new_password_page.dart @@ -4,7 +4,7 @@ import 'package:mc_common_app/extensions/string_extensions.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/view_models/user_view_model.dart'; import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; -import 'package:mc_common_app/widgets/show_fill_button.dart'; +import 'package:mc_common_app/widgets/button/show_fill_button.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; @@ -26,7 +26,7 @@ class _ConfirmNewPasswordPageState extends State { Widget build(BuildContext context) { UserVM userVM = context.read(); return Scaffold( - appBar: CustomAppBar( isRemoveBackButton: true, title: LocaleKeys.forgetPassword.tr()), + appBar: CustomAppBar(isRemoveBackButton: true, title: LocaleKeys.forgetPassword.tr()), body: SingleChildScrollView( child: Container( // width: double.infinity, @@ -34,7 +34,11 @@ class _ConfirmNewPasswordPageState extends State { padding: const EdgeInsets.all(40), child: Column( children: [ - LocaleKeys.newPassword.tr().toText(height: 23 / 24, fontSize: 24, letterSpacing: -1.44,), + LocaleKeys.newPassword.tr().toText( + height: 23 / 24, + fontSize: 24, + letterSpacing: -1.44, + ), 12.height, TextFormField( decoration: InputDecoration( diff --git a/lib/views/user/forget_password_page.dart b/lib/views/user/forget_password_page.dart index fedc92d..8bb9a7a 100644 --- a/lib/views/user/forget_password_page.dart +++ b/lib/views/user/forget_password_page.dart @@ -8,7 +8,7 @@ import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/view_models/user_view_model.dart'; import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; import 'package:mc_common_app/widgets/dropdown/dropdow_field.dart'; -import 'package:mc_common_app/widgets/show_fill_button.dart'; +import 'package:mc_common_app/widgets/button/show_fill_button.dart'; import 'package:mc_common_app/widgets/tab/login_email_tab.dart'; import 'package:mc_common_app/widgets/txt_field.dart'; import 'package:easy_localization/easy_localization.dart'; diff --git a/lib/views/user/login_with_password_page.dart b/lib/views/user/login_with_password_page.dart index 5701025..0009ed9 100644 --- a/lib/views/user/login_with_password_page.dart +++ b/lib/views/user/login_with_password_page.dart @@ -10,7 +10,7 @@ import 'package:mc_common_app/utils/navigator.dart'; import 'package:mc_common_app/view_models/user_view_model.dart'; import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; import 'package:mc_common_app/widgets/dropdown/dropdow_field.dart'; -import 'package:mc_common_app/widgets/show_fill_button.dart'; +import 'package:mc_common_app/widgets/button/show_fill_button.dart'; import 'package:mc_common_app/widgets/tab/login_email_tab.dart'; import 'package:mc_common_app/widgets/txt_field.dart'; import 'package:easy_localization/easy_localization.dart'; diff --git a/lib/views/user/register_page.dart b/lib/views/user/register_page.dart index 74f0286..25411cf 100644 --- a/lib/views/user/register_page.dart +++ b/lib/views/user/register_page.dart @@ -6,7 +6,7 @@ import 'package:mc_common_app/utils/utils.dart'; import 'package:mc_common_app/view_models/user_view_model.dart'; import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; import 'package:mc_common_app/widgets/dropdown/dropdow_field.dart'; -import 'package:mc_common_app/widgets/show_fill_button.dart'; +import 'package:mc_common_app/widgets/button/show_fill_button.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; diff --git a/lib/views/user/register_provider_page.dart b/lib/views/user/register_provider_page.dart index 9dbb229..4a416fa 100644 --- a/lib/views/user/register_provider_page.dart +++ b/lib/views/user/register_provider_page.dart @@ -10,7 +10,7 @@ import 'package:mc_common_app/view_models/user_view_model.dart'; import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; import 'package:mc_common_app/widgets/dropdown/dropdow_field.dart'; -import 'package:mc_common_app/widgets/show_fill_button.dart'; +import 'package:mc_common_app/widgets/button/show_fill_button.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:mc_common_app/widgets/tab/role_type_tab.dart'; diff --git a/lib/views/user/register_selection_page.dart b/lib/views/user/register_selection_page.dart index 7716fd5..b819294 100644 --- a/lib/views/user/register_selection_page.dart +++ b/lib/views/user/register_selection_page.dart @@ -8,7 +8,7 @@ import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/utils/enums.dart'; import 'package:mc_common_app/utils/navigator.dart'; import 'package:mc_common_app/utils/utils.dart'; -import 'package:mc_common_app/widgets/show_fill_button.dart'; +import 'package:mc_common_app/widgets/button/show_fill_button.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; diff --git a/lib/widgets/show_card_buttton.dart b/lib/widgets/button/show_card_buttton.dart similarity index 90% rename from lib/widgets/show_card_buttton.dart rename to lib/widgets/button/show_card_buttton.dart index 34be3bd..14e9d70 100644 --- a/lib/widgets/show_card_buttton.dart +++ b/lib/widgets/button/show_card_buttton.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:mc_common_app/widgets/show_fill_button.dart'; +import 'package:mc_common_app/widgets/button/show_fill_button.dart'; class ShowCardButton extends StatelessWidget { String title; diff --git a/lib/widgets/show_fill_button.dart b/lib/widgets/button/show_fill_button.dart similarity index 71% rename from lib/widgets/show_fill_button.dart rename to lib/widgets/button/show_fill_button.dart index b391be7..13cd8de 100644 --- a/lib/widgets/show_fill_button.dart +++ b/lib/widgets/button/show_fill_button.dart @@ -1,8 +1,7 @@ - import 'package:flutter/material.dart'; import 'package:mc_common_app/extensions/string_extensions.dart'; -import '../theme/colors.dart'; +import '../../theme/colors.dart'; class ShowFillButton extends StatelessWidget { String title; @@ -10,6 +9,7 @@ class ShowFillButton extends StatelessWidget { Color txtColor; double elevation, radius, maxWidth, maxHeight, fontSize, horizontalPadding, horizontalMargin, verticalMargin; bool isFlatButton, isBold; + EdgeInsets? margin; ShowFillButton({ required this.title, @@ -25,6 +25,7 @@ class ShowFillButton extends StatelessWidget { this.isBold = true, this.horizontalMargin = 0, this.verticalMargin = 0, + this.margin, }); @override @@ -38,31 +39,35 @@ class ShowFillButton extends StatelessWidget { right: 20, ), ) - : ConstrainedBox( - constraints: BoxConstraints( - minHeight: maxHeight, - minWidth: maxWidth, - maxHeight: maxHeight, - maxWidth: maxWidth, + : Padding( + padding: margin ?? const EdgeInsets.all(0.0), + child: ConstrainedBox( + constraints: BoxConstraints( + minHeight: maxHeight, + minWidth: maxWidth, + maxHeight: maxHeight, + maxWidth: maxWidth, + ), + child: showButton(), ), - child: showButton(), ); } Widget showButton() { return Container( // decoration: isFlatButton ? null : MyColors.gradientButton, - color:isFlatButton ? null : MyColors.darkPrimaryColor, + color: isFlatButton ? null : MyColors.darkPrimaryColor, margin: EdgeInsets.symmetric(horizontal: horizontalMargin, vertical: verticalMargin), child: MaterialButton( onPressed: onPressed, - shape: new RoundedRectangleBorder( - borderRadius: new BorderRadius.circular(radius), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(radius), ), child: title.toText( fontSize: fontSize, isBold: isBold, color: txtColor, + maxLines: 1, ), ), ); diff --git a/lib/widgets/common_widgets/ad_widget.dart b/lib/widgets/common_widgets/ad_widget.dart index 07677ea..208789d 100644 --- a/lib/widgets/common_widgets/ad_widget.dart +++ b/lib/widgets/common_widgets/ad_widget.dart @@ -1,4 +1,3 @@ - import 'package:flutter/material.dart'; import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/extensions/int_extensions.dart'; diff --git a/lib/widgets/common_widgets/app_bar.dart b/lib/widgets/common_widgets/app_bar.dart index bb41f49..ed766ac 100644 --- a/lib/widgets/common_widgets/app_bar.dart +++ b/lib/widgets/common_widgets/app_bar.dart @@ -72,6 +72,7 @@ class CustomAppBar extends StatelessWidget with PreferredSizeWidget { final String profileImageUrl; final bool isDrawerEnabled; final VoidCallback? onTap; + final double? leadingWidth; const CustomAppBar({ Key? key, @@ -86,45 +87,72 @@ class CustomAppBar extends StatelessWidget with PreferredSizeWidget { this.isTitleCenter, this.titleColor, this.onTap, + this.leadingWidth, }) : super(key: key); @override Widget build(BuildContext context) { - return AppBar( - leadingWidth: 100, - backgroundColor: backgroundColor ?? appBackgroundColor, - elevation: elevation ?? 0, - centerTitle: isTitleCenter ?? true, - leading: isDrawerEnabled - ? InkWell( - onTap: onTap, - child: Row( - children: [ - Image.asset( - profileImageUrl, - width: 34, - height: 34, - fit: BoxFit.fill, - ).toCircle(borderRadius: 100), - 10.width, - SvgPicture.asset(MyAssets.dashboardDrawerIcon), - ], - ).paddingOnly(left: 21), - ) - : isRemoveBackButton - ? null - : IconButton( - icon: const Icon(Icons.arrow_back_ios, color: Colors.black), - onPressed: () => Navigator.of(context).pop(), - ), - iconTheme: IconThemeData( - color: backIconColor ?? Colors.black, //change your color here - ), - actions: actions, - title: (title ?? "").toText(fontSize: 20, isBold: true), + return Column( + children: [ + AppBar( + leadingWidth: leadingWidth??61, + backgroundColor: backgroundColor ?? Colors.white, + elevation: elevation ?? 0, + centerTitle: isTitleCenter ?? true, + leading: isDrawerEnabled + ? InkWell( + onTap: onTap, + child: Row( + children: [ + Image.asset( + profileImageUrl, + width: 34, + height: 34, + fit: BoxFit.fill, + ).toCircle(borderRadius: 100), + 10.width, + SvgPicture.asset(MyAssets.dashboardDrawerIcon), + ], + ).paddingOnly(left: 21), + ) + : isRemoveBackButton + ? null + : Row( + children: [ + 21.width, + IconButton( + icon: const Icon( + Icons.arrow_back_ios, + color: Colors.black, + size: 16, + ), + onPressed: () => onTap??Navigator.of(context).pop(), + ).toContainer( + paddingAll: 0, + borderRadius: 100, + borderColor: MyColors.lightGreyEFColor, + isEnabledBorder: true, + height: 40, + width: 40, + ), + ], + ), + iconTheme: IconThemeData( + color: backIconColor ?? Colors.black, //change your color here + ), + actions: actions, + title: (title ?? "").toText(fontSize: 20, isBold: true), + ), + if (backgroundColor == null) + const Divider( + thickness: 1, + color: MyColors.lightGreyEFColor, + height: 1, + ) + ], ); } @override - Size get preferredSize => const Size.fromHeight(55); + Size get preferredSize => const Size.fromHeight(60); } diff --git a/lib/widgets/dialog/message_dialog.dart b/lib/widgets/dialog/message_dialog.dart index f25c700..5612b9c 100644 --- a/lib/widgets/dialog/message_dialog.dart +++ b/lib/widgets/dialog/message_dialog.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:mc_common_app/extensions/int_extensions.dart'; import 'package:mc_common_app/extensions/string_extensions.dart'; -import 'package:mc_common_app/widgets/show_fill_button.dart'; +import 'package:mc_common_app/widgets/button/show_fill_button.dart'; class MessageDialog extends StatelessWidget { String? title, buttonTitle; diff --git a/lib/widgets/dialog/otp_dialog.dart b/lib/widgets/dialog/otp_dialog.dart index 9a4f898..6f1da1a 100644 --- a/lib/widgets/dialog/otp_dialog.dart +++ b/lib/widgets/dialog/otp_dialog.dart @@ -6,7 +6,7 @@ import 'package:mc_common_app/extensions/string_extensions.dart'; import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/widgets/count_down_timer.dart'; -import 'package:mc_common_app/widgets/show_fill_button.dart'; +import 'package:mc_common_app/widgets/button/show_fill_button.dart'; import '../otp_widget.dart'; diff --git a/lib/widgets/extensions/extensions_widget.dart b/lib/widgets/extensions/extensions_widget.dart index 4cfcd1b..3473834 100644 --- a/lib/widgets/extensions/extensions_widget.dart +++ b/lib/widgets/extensions/extensions_widget.dart @@ -6,7 +6,6 @@ import 'package:mc_common_app/theme/colors.dart'; import 'package:provider/provider.dart'; extension ExtendedText on Widget { - showOverlay({double? width, double? height}) { return Container( width: width ?? double.infinity, @@ -24,21 +23,25 @@ extension ExtendedText on Widget { } extension ContainerExt on Widget { - Widget toWhiteContainer({required double width, required double allPading}) { - return Container( - decoration: const BoxDecoration( - color: MyColors.white, - boxShadow: [ - BoxShadow( - blurRadius: 8, - spreadRadius: 3, - offset: Offset(0, 3), - color: MyColors.greyShadowColor, - ), - ], + Widget toWhiteContainer({required double width, required double allPading, EdgeInsets? margin, VoidCallback? onTap}) { + return InkWell( + onTap: onTap, + child: Container( + decoration: const BoxDecoration( + color: MyColors.white, + boxShadow: [ + BoxShadow( + blurRadius: 8, + spreadRadius: 3, + offset: Offset(0, 3), + color: MyColors.greyShadowColor, + ), + ], + ), + padding: EdgeInsets.all(allPading), + margin: margin, + child: this, ), - padding: EdgeInsets.all(allPading), - child: this, ); } @@ -50,31 +53,39 @@ extension ContainerExt on Widget { // ); // } - Widget toContainer({double borderRadius = 8, + Widget toContainer({ + double borderRadius = 8, double paddingAll = 10, double marginAll = 0, EdgeInsetsGeometry? margin, EdgeInsetsGeometry? padding, Color backgroundColor = Colors.white, bool isShadowEnabled = false, - double? width}) => + bool isEnabledBorder = false, + Color borderColor = Colors.black, + double borderWidget = 1, + double? width, + double? height, + }) => Container( decoration: BoxDecoration( color: backgroundColor, borderRadius: BorderRadius.circular(borderRadius), + border: !isEnabledBorder ? null : Border.all(color: borderColor, width: borderWidget), boxShadow: !isShadowEnabled ? null : [ - BoxShadow( - color: const Color(0xff000000).withOpacity(.05), - blurRadius: 26, - offset: const Offset(0, -3), - ), - ], + BoxShadow( + color: const Color(0xff000000).withOpacity(.05), + blurRadius: 26, + offset: const Offset(0, -3), + ), + ], ), padding: padding ?? EdgeInsets.all(paddingAll), margin: margin ?? EdgeInsets.all(marginAll), width: width, + height: height, child: this, ); } @@ -200,7 +211,6 @@ extension WidgetExt on Widget { ); } - Widget paddingOnly({double left = 0.0, double right = 0.0, double top = 0.0, double bottom = 0.0}) => Padding(padding: EdgeInsets.only(left: left, right: right, top: top, bottom: bottom), child: this); @@ -328,5 +338,4 @@ extension LocaleSetup on MultiProvider { extension WidgetExtensions on Widget { Widget onPress(VoidCallback onTap) => InkWell(onTap: onTap, child: this); - } diff --git a/lib/widgets/tab/menu_tabs.dart b/lib/widgets/tab/menu_tabs.dart new file mode 100644 index 0000000..2a38bef --- /dev/null +++ b/lib/widgets/tab/menu_tabs.dart @@ -0,0 +1,64 @@ +import 'package:flutter/material.dart'; +import 'package:mc_common_app/extensions/int_extensions.dart'; +import 'package:mc_common_app/theme/colors.dart'; +import 'package:mc_common_app/widgets/dropdown/dropdow_field.dart'; + +class MenuTabs extends StatefulWidget { + int selectedIndex; + List dropList; + Function(DropValue value) onSelect; + Color? selectedColor; + + + MenuTabs(this.selectedIndex, this.dropList, {required this.onSelect, this.selectedColor}); + + @override + State createState() => _RoleTypeTabState(); +} + +class _RoleTypeTabState extends State { + @override + Widget build(BuildContext context) { + return SizedBox( + width: double.infinity, + height: 35, + child: ListView.separated( + itemBuilder: (context, index) { + return InkWell( + onTap: () { + setState(() { + widget.selectedIndex = index; + widget.onSelect(widget.dropList[index]); + }); + }, + child: Container( + height: 45, + decoration: BoxDecoration( + color: widget.selectedIndex == index ? widget.selectedColor ?? MyColors.darkIconColor : Colors.white, + border: Border.all(color: widget.selectedIndex == index ? widget.selectedColor ?? MyColors.darkIconColor : MyColors.darkPrimaryColor, width: 1.5), + borderRadius: const BorderRadius.all(Radius.circular(0)), + ), + padding: const EdgeInsets.symmetric(horizontal: 20), + child: Center( + child: Text( + widget.dropList[index].value, + style: TextStyle( + color: widget.selectedIndex == index ? MyColors.white : Colors.black, + fontSize: 12, + fontWeight: FontWeight.w600, + ), + ), + ), + ), + ); + }, + separatorBuilder: (context, index) { + return 12.width; + }, + padding: const EdgeInsets.symmetric(horizontal: 21), + itemCount: widget.dropList.length, + scrollDirection: Axis.horizontal, + ), + ); + } +}