Added Packages Stuff
parent
d59bed59ce
commit
95814fca30
@ -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};
|
||||||
|
}
|
@ -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,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue