Added Packages Stuff

merge-requests/1/head
FaizHashmiCS22 2 years ago
parent d59bed59ce
commit 95814fca30

@ -1,8 +1,3 @@
class AppCommonConst{
static String baseUrl = "https://ms.hmg.com/"; // production server
}
class ApiConsts {
// static String baseUrl = "http://10.200.204.20:2801/"; // Local server
static String baseUrl = "https://ms.hmg.com/"; // production server
@ -59,6 +54,22 @@ class GlobalConsts {
static String doNotShowWelcomeVideo = "doNotShowWelcomeVideo";
}
class MyAssets {
//NavBar Icons
static String homeIcon = "assets/icons/home_icon.svg";
static String announcementIcon = "assets/icons/anouncement_icon.svg";
static String dashboardDrawerIcon = "assets/icons/drawer_icon.svg";
static String closeIcon = "assets/icons/close_icon.svg";
static String appointmentsIcon = "assets/icons/appointments_icon.svg";
static String providersIcon = "assets/icons/providers_icon.svg";
static String miniClock = "assets/icons/mini_clock.svg";
static String nextIcon = "assets/icons/next_icon.svg";
static String settingsIcon = "assets/icons/settings_icon.svg";
static String notificationsIcon = "assets/icons/notification_bell.svg";
}
const String icons = "assets/icons/";
const String categorySvgIcons = "assets/category/svg/";
const String svgIcons = "assets/svg/";

@ -10,7 +10,7 @@ extension EmailValidator on String {
textAlign: textAlign,
style: TextStyle(
height: height,
decoration: textDecoration ?? TextDecoration.none,
decoration: isUnderLine ? TextDecoration.underline : textDecoration ?? TextDecoration.none,
fontSize: fontSize ?? 10,
fontWeight: isBold ? FontWeight.bold : FontWeight.w600,
color: color ?? MyColors.darkTextColor,

@ -0,0 +1,294 @@
// 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<Map<String, dynamic>> load(String fullPath, Locale locale ) {
return Future.value(mapLocales[locale.toString()]);
}
static const Map<String,dynamic> 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": "ثانية"
};
static const Map<String,dynamic> 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"
};
static const Map<String, Map<String,dynamic>> mapLocales = {"ar_SA": ar_SA, "en_US": en_US};
}

@ -32,28 +32,17 @@ abstract class LocaleKeys {
static const createPass = 'createPass';
static const newPassword = 'newPassword';
static const forgetPassword = 'forgetPassword';
static const forgetPasswordQ = 'forgetPasswordQ';
static const recover = 'recover';
static const forgetPasswordRecover = 'forgetPasswordRecover';
static const editAccount = 'editAccount';
static const change = 'change';
static const verifyAccount = 'verifyAccount';
static const login = 'login';
static const log_in = 'log_in';
static const welcomeMessage = 'welcomeMessage';
static const welcomeDes = 'welcomeDes';
static const forgetPass = 'forgetPass';
static const enterPhoneNumber = 'enterPhoneNumber';
static const phoneNumberVerified = 'phoneNumberVerified';
static const verifyNewPassword = 'verifyNewPassword';
static const EnterPass = 'EnterPass';
static const send = 'send';
static const retrivePassword = 'retrivePassword';
static const retriveOnPhone = 'retriveOnPhone';
static const retriveOnEmail = 'retriveOnEmail';
static const enterPhoneForVerfication = 'enterPhoneForVerfication';
static const selectYourCountry = 'selectYourCountry';
static const welcomeBack = 'welcomeBack';
static const alreadySigned = 'alreadySigned';
static const emailChangedSuccessfully = 'emailChangedSuccessfully';
static const passwordIsUpdated = 'passwordIsUpdated';
@ -72,43 +61,14 @@ abstract class LocaleKeys {
static const selectCountryCode = 'selectCountryCode';
static const selectProviderRole = 'selectProviderRole';
static const addPhoneNo = 'addPhoneNo';
static const onlyProviderApp = 'onlyProviderApp';
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 pickAddress = 'pickAddress';
static const pickLocation = 'pickLocation';
static const save = 'save';
static const defineServices = 'defineServices';
static const selectBranch = 'selectBranch ';
static const selectServiceCategory = 'selectServiceCategory';
static const defineBranches = 'defineBranches';
static const defineProviders = 'defineProviders';
static const closeAccount = 'closeAccount';
static const createBranch = 'createBranch';
static const updateBranch = 'updateBranch';
static const address = 'address';
static const branchDescription = 'branchDescription';
static const branchName = 'branchName';
static const chooseCity = 'chooseCity';
static const chooseCountry = 'chooseCountry';
static const selectAttachment = 'selectAttachment';
static const somethingWrong = 'somethingWrong';
static const documentsUploaded = 'documentsUploaded';
static const update = 'update';
static const termsOfService = 'termsOfService';
static const terms = 'terms';
static const profileMsg = 'profileMsg';
static const branchInfo = 'branchInfo';
static const profileCompleted = 'profileCompleted';
static const selectLocationMap = 'selectLocationMap';
static const licensesAndCertifications = 'licensesAndCertifications';
static const completeProfile1 = 'completeProfile1';
static const completeProfile2 = 'completeProfile2';
static const completeProfile3 = 'completeProfile3';
static const userInformation = 'userInformation';
static const faceRecognition = 'faceRecognition';
static const fingerPrint = 'fingerPrint';
@ -118,9 +78,7 @@ abstract class LocaleKeys {
static const userRoleOrTitle = 'userRoleOrTitle';
static const codeSentToEmail = 'codeSentToEmail';
static const number = 'number';
static const phoneNumber = 'phoneNumber';
static const english = 'english';
static const provider = 'provider';
static const title = 'title';
static const msg = 'msg';
static const msg_named = 'msg_named';
@ -135,30 +93,32 @@ abstract class LocaleKeys {
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 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 home = 'home';
static const providers = 'providers';
static const appointments = 'appointments';
static const ads = 'ads';
static const settings = 'settings';
}

@ -4,15 +4,7 @@ import 'colors.dart';
class AppTheme {
static getTheme(isArabic) => ThemeData(
// This is the theme of your application.
//
// Try running your application with "flutter run". You'll see the
// application has a blue toolbar. Then, without quitting the app, try
// changing the primarySwatch below to Colors.green and then invoke
// "hot reload" (press "r" in the console where you ran "flutter run",
// or simply save your changes to "hot reload" in a Flutter IDE).
// Notice that the counter didn't reset back to zero; the application
// is not restarted.
fontFamily: !isArabic ? "Poppins" : null,
primaryColor: primaryColor,
primaryTextTheme: const TextTheme(
titleLarge: TextStyle(color: Colors.white),

@ -8,6 +8,7 @@ class MyColors {
static const Color textColor = Color(0xff777777);
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);
@ -18,6 +19,7 @@ class MyColors {
static const Color grey77Color = Color(0xff777777);
static const Color grey70Color = Color(0xff707070);
static const Color greyACColor = Color(0xffACACAC);
static const Color greyShadowColor = Color(0xFFE8E7E7);
static const Color grey98Color = Color(0xff989898);
static const Color lightGreyEFColor = Color(0xffEFEFEF);
static const Color lightGreyEDColor = Color(0xffEDEDED);
@ -37,7 +39,7 @@ class MyColors {
primaryColor,
]),
boxShadow: [
BoxShadow(
BoxShadow(
color: primaryColor.withOpacity(0.5),
blurRadius: 20.0,
spreadRadius: 1.0,

@ -2,7 +2,7 @@ import 'package:mc_common_app/extensions/int_extensions.dart';
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/app_bar.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/txt_field.dart';
import 'package:easy_localization/easy_localization.dart';
@ -31,7 +31,7 @@ class _ChangeEmailPageState extends State<ChangeEmailPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: appBar(context, title: LocaleKeys.changeEmail.tr()),
appBar: CustomAppBar( isRemoveBackButton: true, title: LocaleKeys.changeEmail.tr()),
body: SingleChildScrollView(
child: Container(
// width: double.infinity,

@ -2,7 +2,7 @@ import 'package:mc_common_app/extensions/int_extensions.dart';
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/app_bar.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/txt_field.dart';
import 'package:easy_localization/easy_localization.dart';
@ -31,7 +31,7 @@ class _ChangeMobilePageState extends State<ChangeMobilePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: appBar(context, title: LocaleKeys.changeMobile.tr()),
appBar: CustomAppBar( isRemoveBackButton: true, title: LocaleKeys.changeMobile.tr()),
body: SingleChildScrollView(
child: Container(
// width: double.infinity,

@ -2,7 +2,7 @@ import 'package:mc_common_app/extensions/int_extensions.dart';
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/app_bar.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/txt_field.dart';
import 'package:easy_localization/easy_localization.dart';
@ -31,7 +31,7 @@ class _ChangePasswordPageState extends State<ChangePasswordPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: appBar(context, title: LocaleKeys.changePassword.tr()),
appBar: CustomAppBar( isRemoveBackButton: true, title: LocaleKeys.changePassword.tr()),
body: SingleChildScrollView(
child: Container(
// width: double.infinity,

@ -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/models/user/register_user.dart';
import 'package:mc_common_app/view_models/user_view_model.dart';
import 'package:mc_common_app/widgets/app_bar.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/txt_field.dart';
import 'package:easy_localization/easy_localization.dart';
@ -35,8 +35,7 @@ class _CompleteProfilePageState extends State<CompleteProfilePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: appBar(
context,
appBar: CustomAppBar( isRemoveBackButton: true,
title: LocaleKeys.signUp.tr(),
),
body: SizedBox(

@ -3,7 +3,7 @@ import 'package:mc_common_app/extensions/string_extensions.dart';
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/app_bar.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/txt_field.dart';
import 'package:easy_localization/easy_localization.dart';
@ -21,7 +21,7 @@ class ConfirmNewPasswordPage extends StatelessWidget {
Widget build(BuildContext context) {
UserVM userVM = context.read<UserVM>();
return Scaffold(
appBar: appBar(context, title: LocaleKeys.forgetPassword.tr()),
appBar: CustomAppBar( isRemoveBackButton: true, title: LocaleKeys.forgetPassword.tr()),
body: Container(
width: double.infinity,
height: double.infinity,

@ -3,7 +3,7 @@ import 'package:mc_common_app/extensions/int_extensions.dart';
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/app_bar.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
import 'package:mc_common_app/widgets/show_fill_button.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
@ -26,7 +26,7 @@ class _ConfirmNewPasswordPageState extends State<ConfirmNewPasswordPage> {
Widget build(BuildContext context) {
UserVM userVM = context.read<UserVM>();
return Scaffold(
appBar: appBar(context, title: LocaleKeys.forgetPassword.tr()),
appBar: CustomAppBar( isRemoveBackButton: true, title: LocaleKeys.forgetPassword.tr()),
body: SingleChildScrollView(
child: Container(
// width: double.infinity,

@ -5,7 +5,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/utils/navigator.dart';
import 'package:mc_common_app/view_models/user_view_model.dart';
import 'package:mc_common_app/widgets/app_bar.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
@ -27,7 +27,7 @@ class _EditAccountPageState extends State<EditAccountPage> {
Widget build(BuildContext context) {
UserVM userVM = context.read<UserVM>();
return Scaffold(
appBar: appBar(context, title: LocaleKeys.editAccount.tr()),
appBar: CustomAppBar( isRemoveBackButton: true, title: LocaleKeys.editAccount.tr()),
body: Container(
width: double.infinity,
height: double.infinity,

@ -4,7 +4,7 @@ import 'package:mc_common_app/utils/utils.dart';
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/app_bar.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
import 'package:mc_common_app/widgets/button/show_image_button.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
@ -27,7 +27,7 @@ class _ForgetPasswordMethodPageState extends State<ForgetPasswordMethodPage> {
Widget build(BuildContext context) {
UserVM userVM = context.read<UserVM>();
return Scaffold(
appBar: appBar(context, title: LocaleKeys.forgetPassword.tr()),
appBar: CustomAppBar( isRemoveBackButton: true,title: LocaleKeys.forgetPassword.tr(),),
body: Container(
width: double.infinity,
height: double.infinity,

@ -6,7 +6,7 @@ import 'package:mc_common_app/extensions/int_extensions.dart';
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/app_bar.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/tab/login_email_tab.dart';
@ -50,7 +50,7 @@ class _ForgetPasswordPageState extends State<ForgetPasswordPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: appBar(context, title: LocaleKeys.changePassword.tr()),
appBar: CustomAppBar( isRemoveBackButton: true, title: LocaleKeys.changePassword.tr()),
body: Container(
width: double.infinity,
height: double.infinity,

@ -4,7 +4,7 @@ import 'package:mc_common_app/extensions/int_extensions.dart';
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/app_bar.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
import 'package:mc_common_app/widgets/button/show_image_button.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
@ -19,7 +19,7 @@ class LoginMethodSelectionPage extends StatelessWidget {
Widget build(BuildContext context) {
UserVM userVM = context.read<UserVM>();
return Scaffold(
appBar: appBar(context, title: LocaleKeys.log_in.tr()),
appBar: CustomAppBar( isRemoveBackButton: true, title: LocaleKeys.log_in.tr()),
body: Container(
width: double.infinity,
height: double.infinity,

@ -6,7 +6,7 @@ import 'package:mc_common_app/generated/locale_keys.g.dart';
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/app_bar.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
import 'package:mc_common_app/widgets/button/show_image_button.dart';
import 'package:easy_localization/easy_localization.dart';
@ -38,7 +38,7 @@ class _LoginVerificationPageState extends State<LoginVerificationPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: appBar(context, title: LocaleKeys.login.tr()),
appBar: CustomAppBar( isRemoveBackButton: true, title: LocaleKeys.login.tr()),
body: Container(
width: double.infinity,
height: double.infinity,

@ -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/utils/utils.dart';
import 'package:mc_common_app/view_models/user_view_model.dart';
import 'package:mc_common_app/widgets/app_bar.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
import 'package:mc_common_app/widgets/button/show_image_button.dart';
import 'package:mc_common_app/widgets/txt_field.dart';
import 'package:easy_localization/easy_localization.dart';
@ -21,7 +21,7 @@ class LoginVerifyAccountPage extends StatelessWidget {
Widget build(BuildContext context) {
UserVM userVM = context.read<UserVM>();
return Scaffold(
appBar: appBar(context,title: LocaleKeys.login.tr()),
appBar: CustomAppBar( isRemoveBackButton: true,title: LocaleKeys.login.tr()),
body: Container(
width: double.infinity,
height: double.infinity,

@ -8,7 +8,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/utils/navigator.dart';
import 'package:mc_common_app/view_models/user_view_model.dart';
import 'package:mc_common_app/widgets/app_bar.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/tab/login_email_tab.dart';
@ -53,7 +53,7 @@ class _LoginWithPasswordState extends State<LoginWithPassword> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: appBar(context, title: ""),
appBar: CustomAppBar( isRemoveBackButton: true, title: ""),
body: Container(
width: double.infinity,
height: double.infinity,

@ -4,7 +4,7 @@ import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/models/user/country.dart';
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/app_bar.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:easy_localization/easy_localization.dart';
@ -30,7 +30,7 @@ class _RegisterPageState extends State<RegisterPage> {
Widget build(BuildContext context) {
final UserVM userVM = context.read<UserVM>();
return Scaffold(
appBar: appBar(context, title: ""),
appBar: CustomAppBar( isRemoveBackButton: true, title: ""),
body: Container(
width: double.infinity,
height: double.infinity,

@ -17,7 +17,6 @@ class RegisterSelectionPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
// appBar: appBar(title: LocaleKeys.login.tr()),
body: Container(
width: double.infinity,
height: double.infinity,

@ -5,7 +5,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/utils/navigator.dart';
import 'package:mc_common_app/utils/utils.dart';
import 'package:mc_common_app/widgets/app_bar.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
import 'package:mc_common_app/widgets/button/show_image_button.dart';
import 'package:mc_common_app/widgets/dialog/dialogs.dart';
import 'package:mc_common_app/widgets/dialog/message_dialog.dart';
@ -26,7 +26,7 @@ class VerifyPasswordPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: appBar(context, title: LocaleKeys.changePassword.tr()),
appBar: CustomAppBar( isRemoveBackButton: true, title: LocaleKeys.changePassword.tr()),
body: Container(
width: double.infinity,
height: double.infinity,

@ -1,33 +0,0 @@
import 'package:flutter/material.dart';
import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/theme/colors.dart';
AppBar appBar(
BuildContext context, {
Color? backgroundColor,
double? elevation,
String? title,
Color? titleColor,
bool? isTitleCenter,
Color? backIconColor,
List<Widget>? actions,
bool isRemoveBackButton = false,
}) {
return AppBar(
backgroundColor: backgroundColor ?? appBackgroundColor,
elevation: elevation ?? 0,
centerTitle: isTitleCenter ?? true,
leading: isRemoveBackButton
? null
: IconButton(
icon: 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),
);
}

@ -0,0 +1,111 @@
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/theme/colors.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
class AdWidget extends StatelessWidget {
final int count;
const AdWidget({Key? key, required this.count}) : super(key: key);
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: count,
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
itemBuilder: (BuildContext context, int index) {
return Padding(
padding: const EdgeInsets.only(bottom: 15),
child: buildAdContainer(),
);
});
}
Widget buildAdContainer() {
return Row(
children: [
Image.asset(
"assets/images/bn_car.jpeg",
width: 80,
height: 80,
fit: BoxFit.cover,
),
12.width,
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
"Toyota Crolla".toText(fontSize: 16, isBold: true),
Row(
children: [
"Model:".toText(
color: MyColors.lightTextColor,
),
2.width,
"2019".toText(),
],
),
Row(
children: [
"Mileage:".toText(
color: MyColors.lightTextColor,
),
2.width,
"73,000 km".toText(),
],
),
],
),
),
Column(
crossAxisAlignment: CrossAxisAlignment.end,
mainAxisAlignment: MainAxisAlignment.start,
children: [
"Riyadh".toText(
color: MyColors.lightTextColor,
),
"9 Hours Ago".toText(
color: MyColors.lightTextColor,
),
],
),
],
),
8.height,
Row(
children: [
Expanded(
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.end,
children: [
"30,000".toText(fontSize: 16, isBold: true),
2.width,
"SAR:".toText(
color: MyColors.lightTextColor,
),
],
),
),
const Icon(Icons.arrow_forward)
],
),
],
),
),
],
).toWhiteContainer(width: double.infinity, allPading: 12);
}
}

@ -0,0 +1,125 @@
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:mc_common_app/classes/consts.dart';
import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/theme/colors.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
//import 'package:flutter/material.dart';
// import 'package:flutter_svg/flutter_svg.dart';
// import 'package:mc_common_app/classes/consts.dart';
// import 'package:mc_common_app/extensions/int_extensions.dart';
// import 'package:mc_common_app/extensions/string_extensions.dart';
// import 'package:mc_common_app/theme/colors.dart';
// import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
// import 'package:sizer/sizer.dart';
//
// class CustomAppBar extends StatelessWidget with PreferredSizeWidget {
// final Color? backgroundColor;
// final double? elevation;
// final String? title;
// final Color? titleColor;
// final bool? isTitleCenter;
// final Color? backIconColor;
// final List<Widget>? actions;
// final bool isRemoveBackButton;
//
// const CustomAppBar({
// Key? key,
// this.title,
// required this.isRemoveBackButton,
// this.backgroundColor,
// this.actions,
// this.backIconColor,
// this.elevation,
// this.isTitleCenter,
// this.titleColor,
// }) : super(key: key);
//
// @override
// Widget build(BuildContext context) {
// return AppBar(
// backgroundColor: backgroundColor ?? appBackgroundColor,
// elevation: elevation ?? 0,
// centerTitle: isTitleCenter ?? true,
// leading: 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),
// );
// }
//
// @override
// Size get preferredSize => const Size.fromHeight(kToolbarHeight);
// }
class CustomAppBar extends StatelessWidget with PreferredSizeWidget {
final Color? backgroundColor;
final double? elevation;
final String? title;
final Color? titleColor;
final bool? isTitleCenter;
final Color? backIconColor;
final List<Widget>? actions;
final bool isRemoveBackButton;
final String profileImageUrl;
final bool isDrawerEnabled;
const CustomAppBar({
Key? key,
this.title,
this.isDrawerEnabled = false,
this.profileImageUrl = "",
required this.isRemoveBackButton,
this.backgroundColor,
this.actions,
this.backIconColor,
this.elevation,
this.isTitleCenter,
this.titleColor,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return AppBar(
leadingWidth: 100,
backgroundColor: backgroundColor ?? appBackgroundColor,
elevation: elevation ?? 0,
centerTitle: isTitleCenter ?? true,
leading: isDrawerEnabled
? 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),
);
}
@override
Size get preferredSize => const Size.fromHeight(80);
}

@ -0,0 +1,168 @@
import 'package:carousel_slider/carousel_slider.dart';
import 'package:flutter/material.dart';
import 'package:mc_common_app/classes/consts.dart';
import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/theme/colors.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
class AppointmentSliderWidget extends StatelessWidget {
const AppointmentSliderWidget({Key? key}) : super(key: key);
Widget buildAppointmentContainerForProvider() {
return Container(
margin: EdgeInsets.only(bottom: 21, left: 21, right: 21, top: 7),
child: Column(
children: [
Row(
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
"Olaya Brach".toText(
color: MyColors.lightTextColor,
isBold: true,
),
"Abdullah Alhbas".toText(
isBold: true,
fontSize: 14,
),
Row(
children: [
"Appt. On:".toText(
color: MyColors.lightTextColor,
),
2.width,
"19-Mar-2023 11:48 AM".toText(),
],
),
],
),
),
"1+ Requests".toText(fontSize: 10).toContainer(
borderRadius: 15,
backgroundColor: MyColors.lightGreyEAColor,
padding: const EdgeInsets.symmetric(
vertical: 6,
horizontal: 12,
),
),
],
),
8.height,
Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Expanded(
child: Column(
children: [
showServices("Maintenance"),
2.height,
showServices("Accessories and Modification"),
],
),
),
const Icon(
Icons.arrow_forward,
),
],
),
],
).toWhiteContainer(width: double.infinity, allPading: 12),
);
}
Widget buildAppointmentSliderForConsumer() {
return Container(
margin: EdgeInsets.only(bottom: 21, left: 21, right: 21, top: 7),
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Image.asset(
"assets/images/bn_car.jpeg",
width: 56,
height: 56,
fit: BoxFit.fill,
).toCircle(borderRadius: 100),
8.width,
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
"Al Aziz Service Station".toText(color: MyColors.black, isBold: true, fontSize: 16),
Row(
children: [
MyAssets.miniClock.buildSvg(height: 12),
2.width,
"08:00 to 08:30 25 July, 2023".toText(
color: MyColors.lightTextColor,
fontSize: 12,
),
],
),
9.height,
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.end,
children: [
"Appointment Details".toText(
color: MyColors.primaryColor,
isUnderLine: true,
isBold: true,
fontSize: 14,
),
const Icon(Icons.arrow_forward),
],
),
],
),
),
],
),
],
).toWhiteContainer(width: double.infinity, allPading: 12),
);
}
@override
Widget build(BuildContext context) {
return CarouselSlider.builder(
options: CarouselOptions(
height: 140,
viewportFraction: 1.0,
enlargeCenterPage: false,
enableInfiniteScroll: false,
//
// onPageChanged: (index) {
// setState(() {
// _current = index;
// });
// },
),
itemCount: 10,
itemBuilder: (BuildContext context, int itemIndex, int pageViewIndex) => buildAppointmentSliderForConsumer(),
);
}
Widget showServices(String title) {
return Row(
children: [
const Icon(
Icons.ac_unit,
color: MyColors.primaryColor,
size: 18,
),
8.width,
title.toText(
fontSize: 14,
isBold: true,
),
],
);
}
}

@ -0,0 +1,61 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:mc_common_app/extensions/widget_extensions.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/theme/colors.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:mc_common_app/classes/consts.dart';
class CustomBottomNavbar extends StatelessWidget {
final int selectedNavbarBarIndex;
final Function(int) onSelected;
const CustomBottomNavbar({Key? key, required this.onSelected, required this.selectedNavbarBarIndex}) : super(key: key);
@override
Widget build(BuildContext context) {
return BottomNavigationBar(
items: <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: SvgPicture.asset(MyAssets.providersIcon).paddingAll(5),
activeIcon: SvgPicture.asset(MyAssets.providersIcon, color: MyColors.darkIconColor).paddingAll(5),
label: LocaleKeys.providers.tr(),
),
BottomNavigationBarItem(
icon: SvgPicture.asset(MyAssets.appointmentsIcon).paddingAll(5),
activeIcon: SvgPicture.asset(MyAssets.appointmentsIcon, color: MyColors.darkIconColor).paddingAll(5),
label: LocaleKeys.appointments.tr(),
),
BottomNavigationBarItem(
icon: SvgPicture.asset(
MyAssets.homeIcon,
color: MyColors.lightIconColor,
).paddingAll(5),
activeIcon: SvgPicture.asset(MyAssets.homeIcon, color: MyColors.darkIconColor).paddingAll(5),
label: LocaleKeys.home.tr(),
),
BottomNavigationBarItem(
icon: SvgPicture.asset(MyAssets.announcementIcon).paddingAll(5),
activeIcon: SvgPicture.asset(MyAssets.announcementIcon, color: MyColors.darkIconColor).paddingAll(5),
label: LocaleKeys.ads.tr(),
),
BottomNavigationBarItem(
icon: SvgPicture.asset(MyAssets.settingsIcon).paddingAll(5),
activeIcon: SvgPicture.asset(MyAssets.settingsIcon, color: MyColors.darkIconColor).paddingAll(5),
label: LocaleKeys.settings.tr(),
),
],
currentIndex: selectedNavbarBarIndex,
type: BottomNavigationBarType.fixed,
selectedItemColor: MyColors.darkIconColor,
showSelectedLabels: true,
showUnselectedLabels: true,
unselectedItemColor: MyColors.lightTextColor,
unselectedFontSize: 11,
selectedFontSize: 11,
selectedLabelStyle: const TextStyle(fontFamily: "Poppins"),
unselectedLabelStyle: const TextStyle(fontFamily: "Poppins"),
onTap: (index) => onSelected(index),
);
}
}

@ -0,0 +1,39 @@
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/extensions/extensions_widget.dart';
class ServiceProviderWidget extends StatelessWidget {
const ServiceProviderWidget({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return SizedBox(
width: double.infinity,
height: 140,
child: ListView.builder(
itemCount: 9,
scrollDirection: Axis.horizontal,
shrinkWrap: true,
itemBuilder: (BuildContext context, int index) {
return SizedBox(
width: 90,
child: Column(
children: [
Image.asset(
"assets/images/bn_car.jpeg",
width: 80,
height: 80,
fit: BoxFit.cover,
).toCircle(borderRadius: 100),
8.height,
"Olaya Branch".toText(fontSize: 14, isBold: true, textAlign: TextAlign.center),
],
),
);
},
),
);
}
}

@ -0,0 +1,30 @@
import 'package:flutter/cupertino.dart';
import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/theme/colors.dart';
class ViewAllWidget extends StatelessWidget {
final String title;
final String subTitle;
const ViewAllWidget({Key? key, required this.title, required this.subTitle}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
width: double.infinity,
padding: const EdgeInsets.only(bottom: 7),
child: Row(
children: [
Expanded(child: title.toText(isBold: true, fontSize: 18)),
subTitle.toText(
fontSize: 11,
isBold: true,
color: MyColors.primaryColor,
textDecoration: TextDecoration.underline,
)
],
),
);
}
}

@ -1,7 +1,9 @@
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:mc_common_app/theme/colors.dart';
extension ExtendedText on Widget {
showOverlay({double? width, double? height}){
showOverlay({double? width, double? height}) {
return Container(
width: width ?? double.infinity,
height: height ?? 60,
@ -17,15 +19,39 @@ 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,
),
],
),
padding: EdgeInsets.all(allPading),
child: this,
);
}
Widget toContainer({required double borderRadius, required Color backgroundColor, required EdgeInsetsGeometry padding}) {
return Container(
decoration: BoxDecoration(color: backgroundColor, borderRadius: BorderRadius.circular(borderRadius)),
padding: padding,
child: this,
);
}
}
extension ImageExt on Image {
Widget circular() {
Widget toCircle({required double borderRadius}) {
return ClipRRect(
clipBehavior: Clip.hardEdge,
borderRadius: BorderRadius.circular(100),
borderRadius: BorderRadius.circular(borderRadius),
child: this,
);
}
@ -33,7 +59,7 @@ extension ImageExt on Image {
extension WidgetExt on Widget {
Widget toWidget() {
return this as Widget;
return this;
}
Widget sized({double? width, double? height}) {
@ -43,12 +69,17 @@ extension WidgetExt on Widget {
child: this,
);
}
Widget inkWell({required VoidCallback onTap,double radius=0}){
Widget inkWell({required VoidCallback onTap, double radius = 0}) {
return InkWell(
child: Material(child: this,color: Colors.transparent,),
onTap: onTap,
child: Material(
color: Colors.transparent,
child: this,
),
);
}
Widget sizeSq(double size) {
return SizedBox(
width: size,
@ -65,10 +96,8 @@ extension WidgetExt on Widget {
);
}
Widget margin(
{double top = 0, double bottom = 0, double left = 0, double right = 0}) {
var pad =
EdgeInsets.only(top: top, left: left, bottom: bottom, right: right);
Widget margin({double top = 0, double bottom = 0, double left = 0, double right = 0}) {
var pad = EdgeInsets.only(top: top, left: left, bottom: bottom, right: right);
try {
(this as dynamic).margin = pad;
} catch (err) {
@ -132,6 +161,18 @@ extension WidgetExt on Widget {
);
}
Widget horPaddingMain() {
return Padding(
padding: EdgeInsets.symmetric(horizontal: 21),
child: this,
);
}
Widget onPress(VoidCallback onTap) => InkWell(onTap: onTap, child: this);
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);
// Widget onTap(VoidCallback onTap, {double corners = 0}) {
// return Clickable.widget(child: this, corners: corners, onTap: onTap);
// }
@ -218,8 +259,7 @@ extension StateExt on State {
extension xFuture<T> on Future<T?> {
thenWithDelay(int millis, Function(T) thenBlock) {
then((value) {
Future.delayed(Duration(milliseconds: millis))
.then((value) => thenBlock(value));
Future.delayed(Duration(milliseconds: millis)).then((value) => thenBlock(value));
});
}
}
@ -231,3 +271,14 @@ extension xDouble on int {
Duration durationHour() => Duration(hours: this);
}
extension BuildSVG on String {
Widget buildSvg({double? height, double? width, BoxFit fit = BoxFit.contain}) {
return SvgPicture.asset(
this,
fit: fit,
height: height,
width: width,
);
}
}

@ -57,6 +57,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.0.1"
carousel_slider:
dependency: "direct main"
description:
name: carousel_slider
sha256: "9c695cc963bf1d04a47bd6021f68befce8970bcd61d24938e1fb0918cf5d9c42"
url: "https://pub.dev"
source: hosted
version: "4.2.1"
characters:
dependency: transitive
description:

Loading…
Cancel
Save