fonts fixes & changes

master_new_changes
Aamir.Muhammad 2 years ago
parent 27f670917a
commit 1f41907962

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="13" height="9.688" viewBox="0 0 13 9.688">
<g id="Group" transform="translate(6 17.688) rotate(180)">
<path id="Vector" d="M13,4.844a.781.781,0,0,1-.781.781H2.674L5.414,8.352a.781.781,0,0,1-1.1,1.108L.23,5.4h0a.782.782,0,0,1,0-1.106h0L4.312.227a.781.781,0,0,1,1.1,1.108L2.674,4.062h9.545A.781.781,0,0,1,13,4.844Z" transform="translate(-7 8)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 411 B

@ -590,6 +590,7 @@
"noProvidersInFav": "ليس لديك أي مقدمي خدمات في المفضلة.", "noProvidersInFav": "ليس لديك أي مقدمي خدمات في المفضلة.",
"providerHasNoBranches": "هذا المزود ليس لديه فروع حتى الآن.", "providerHasNoBranches": "هذا المزود ليس لديه فروع حتى الآن.",
"totalBranches": "إجمالي الفروع", "totalBranches": "إجمالي الفروع",
"memberSince": "عضو منذ" "memberSince": "عضو منذ",
"reserved": "محجوز"
} }

@ -411,7 +411,7 @@
"select": "Select", "select": "Select",
"deleteAdConfirmation": "Do you want to delete the ad?", "deleteAdConfirmation": "Do you want to delete the ad?",
"deleteAdConfirmationMessage": "Your ad will be permanently deleted and you cannot undo this action", "deleteAdConfirmationMessage": "Your ad will be permanently deleted and you cannot undo this action",
"mileage": "mileage", "mileage": "Mileage",
"transmission": "Transmission", "transmission": "Transmission",
"demand": "Demand", "demand": "Demand",
"adDurationExpired": "Your Ad Duration time is over", "adDurationExpired": "Your Ad Duration time is over",
@ -591,5 +591,7 @@
"noProvidersInFav": "You have no providers in Favourites.", "noProvidersInFav": "You have no providers in Favourites.",
"providerHasNoBranches": "This Provider has no branches yet.", "providerHasNoBranches": "This Provider has no branches yet.",
"totalBranches": "Total Branches", "totalBranches": "Total Branches",
"memberSince": "Member Since" "memberSince": "Member Since",
"reserved": "Reserved"
} }

@ -285,6 +285,7 @@ class MyAssets {
static String visaPng = "${assetPath}icons/payments/visa.png"; static String visaPng = "${assetPath}icons/payments/visa.png";
static String whatsAppIcon = "${assetPath}icons/whatsapp_icon.svg"; static String whatsAppIcon = "${assetPath}icons/whatsapp_icon.svg";
static String arrowRight = "${assetPath}icons/ic_arrow_right.svg";
} }
RegExp numReg = RegExp(r".*[0-9].*"); RegExp numReg = RegExp(r".*[0-9].*");
@ -300,8 +301,8 @@ class MyLocales {
} }
class MyFonts { class MyFonts {
static const poppinsFont = 'Poppins'; static const poppinsFont = 'packages/mc_common_app/Poppins';
static const gessTwoFont = 'GessTwo'; static const gessTwoFont = 'packages/mc_common_app/GessTwo';
static const FontWeight Thin = FontWeight.w100; static const FontWeight Thin = FontWeight.w100;
static const FontWeight ExtraLight = FontWeight.w200; static const FontWeight ExtraLight = FontWeight.w200;

@ -1,41 +1,46 @@
import 'package:auto_size_text/auto_size_text.dart'; import 'package:auto_size_text/auto_size_text.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:mc_common_app/classes/app_state.dart';
import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/classes/consts.dart';
import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/theme/colors.dart';
import 'package:mc_common_app/utils/enums.dart'; import 'package:mc_common_app/utils/enums.dart';
extension EmailValidator on String { extension EmailValidator on String {
Widget toText( Widget toText(
{Color? color, {Color? color,
bool isBold = false, bool isBold = false,
double? fontSize, double? fontSize,
bool isUnderLine = false, bool isUnderLine = false,
bool isItalic = false, bool isItalic = false,
TextDecoration? textDecoration, TextDecoration? textDecoration,
double letterSpacing = 0, double letterSpacing = 0,
TextAlign? textAlign, TextAlign? textAlign,
FontWeight? fontWeight, FontWeight? fontWeight,
double? height, double? height,
Color? decorationColor, Color? decorationColor,
TextOverflow? overflow, TextOverflow? overflow,
int? maxLines}) => bool isUpperCase = false,
AutoSizeText( int? maxLines}) {
this, bool isArabic = AppState().postParamsObject!.languageID == 1; // arabic -> 1 , English -> 2
textAlign: textAlign, return AutoSizeText(
maxLines: maxLines, isUpperCase ? this.toUpperCase() : this,
style: TextStyle( textAlign: textAlign,
overflow: overflow, maxLines: maxLines,
fontStyle: isItalic ? FontStyle.italic : null, style: TextStyle(
height: height, overflow: overflow,
decoration: isUnderLine ? TextDecoration.underline : textDecoration ?? TextDecoration.none, fontStyle: isItalic ? FontStyle.italic : null,
decorationColor: decorationColor, height: height,
fontSize: fontSize ?? 10, decoration: isUnderLine ? TextDecoration.underline : textDecoration ?? TextDecoration.none,
fontWeight: isBold ? FontWeight.bold : fontWeight ?? MyFonts.SemiBold, decorationColor: decorationColor ?? MyColors.provTextColor,
color: color ?? MyColors.darkTextColor, fontSize: fontSize ?? 10,
letterSpacing: letterSpacing, fontFamily: isArabic ? MyFonts.gessTwoFont : MyFonts.poppinsFont,
), fontWeight: isBold ? FontWeight.bold : fontWeight ?? MyFonts.SemiBold,
); color: color ?? MyColors.darkTextColor,
letterSpacing: letterSpacing,
),
);
}
bool isValidEmail() { 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); 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);

@ -606,7 +606,8 @@ class CodegenLoader extends AssetLoader{
"noProvidersInFav": "ليس لديك أي مقدمي خدمات في المفضلة.", "noProvidersInFav": "ليس لديك أي مقدمي خدمات في المفضلة.",
"providerHasNoBranches": "هذا المزود ليس لديه فروع حتى الآن.", "providerHasNoBranches": "هذا المزود ليس لديه فروع حتى الآن.",
"totalBranches": "إجمالي الفروع", "totalBranches": "إجمالي الفروع",
"memberSince": "عضو منذ" "memberSince": "عضو منذ",
"reserved": "محجوز"
}; };
static const Map<String,dynamic> en_US = { static const Map<String,dynamic> en_US = {
"firstTimeLogIn": "First Time Log In", "firstTimeLogIn": "First Time Log In",
@ -1021,7 +1022,7 @@ static const Map<String,dynamic> en_US = {
"select": "Select", "select": "Select",
"deleteAdConfirmation": "Do you want to delete the ad?", "deleteAdConfirmation": "Do you want to delete the ad?",
"deleteAdConfirmationMessage": "Your ad will be permanently deleted and you cannot undo this action", "deleteAdConfirmationMessage": "Your ad will be permanently deleted and you cannot undo this action",
"mileage": "mileage", "mileage": "Mileage",
"transmission": "Transmission", "transmission": "Transmission",
"demand": "Demand", "demand": "Demand",
"adDurationExpired": "Your Ad Duration time is over", "adDurationExpired": "Your Ad Duration time is over",
@ -1201,7 +1202,8 @@ static const Map<String,dynamic> en_US = {
"noProvidersInFav": "You have no providers in Favourites.", "noProvidersInFav": "You have no providers in Favourites.",
"providerHasNoBranches": "This Provider has no branches yet.", "providerHasNoBranches": "This Provider has no branches yet.",
"totalBranches": "Total Branches", "totalBranches": "Total Branches",
"memberSince": "Member Since" "memberSince": "Member Since",
"reserved": "Reserved"
}; };
static const Map<String, Map<String,dynamic>> mapLocales = {"ar_SA": ar_SA, "en_US": en_US}; static const Map<String, Map<String,dynamic>> mapLocales = {"ar_SA": ar_SA, "en_US": en_US};
} }

@ -570,5 +570,6 @@ abstract class LocaleKeys {
static const providerHasNoBranches = 'providerHasNoBranches'; static const providerHasNoBranches = 'providerHasNoBranches';
static const totalBranches = 'totalBranches'; static const totalBranches = 'totalBranches';
static const memberSince = 'memberSince'; static const memberSince = 'memberSince';
static const reserved = 'reserved';
} }

@ -89,7 +89,12 @@ class BranchDetailModel {
} }
BranchDetailModel.fromJson(Map<String, dynamic> json) { BranchDetailModel.fromJson(Map<String, dynamic> json) {
List<AdImage> images = populateBranchImages(json["serviceProviderBranchImage"]); List<AdImage> images = [];
if (json.containsKey('serviceProviderBranchImage')) {
images = populateBranchImages(json["serviceProviderBranchImage"]);
} else {
images = populateBranchImages(json["branchImages"]);
}
id = json["id"]; id = json["id"];
serviceProviderId = json["serviceProviderID"]; serviceProviderId = json["serviceProviderID"];
branchProfileImage = images.isNotEmpty ? images.first.imageUrl ?? "" : null; branchProfileImage = images.isNotEmpty ? images.first.imageUrl ?? "" : null;

@ -9,8 +9,8 @@ class AppTheme {
fontFamily: !isArabic ? MyFonts.poppinsFont : MyFonts.gessTwoFont, fontFamily: !isArabic ? MyFonts.poppinsFont : MyFonts.gessTwoFont,
primaryColor: primaryColor, primaryColor: primaryColor,
useMaterial3: false, useMaterial3: false,
primaryTextTheme: const TextTheme( primaryTextTheme: TextTheme(
titleLarge: TextStyle(color: Colors.white), titleLarge: TextStyle(color: Colors.white, fontFamily: !isArabic ? MyFonts.poppinsFont : MyFonts.gessTwoFont,)
), ),
colorScheme: ColorScheme.fromSwatch(primarySwatch: Colors.orange).copyWith(surface: Colors.white), colorScheme: ColorScheme.fromSwatch(primarySwatch: Colors.orange).copyWith(surface: Colors.white),
); );

@ -40,6 +40,9 @@ class MyColors {
static const Color greyAddBorderColor = Color(0xffEEEEEE); static const Color greyAddBorderColor = Color(0xffEEEEEE);
static const Color lightGreyBgColor = Color(0xffFDFDFD); static const Color lightGreyBgColor = Color(0xffFDFDFD);
static const Color lightGreyDDColor = Color(0xffDDDDDD); static const Color lightGreyDDColor = Color(0xffDDDDDD);
static const Color greyColor = Color(0xff787878);
static const Color provTextColor = Color(0xFF28323A);
//AdStatusColors: //AdStatusColors:
static const Color adActiveStatusColor = Color(0xff5FC16A); static const Color adActiveStatusColor = Color(0xff5FC16A);

@ -651,12 +651,13 @@ class UserVM extends BaseVM {
} }
void changeLanguage(BuildContext context) { void changeLanguage(BuildContext context) {
print("${EasyLocalization.of(context)?.currentLocale}");
if (EasyLocalization.of(context)?.currentLocale?.countryCode == "SA") { if (EasyLocalization.of(context)?.currentLocale?.countryCode == "SA") {
context.setLocale(const Locale("en", "US")); context.setLocale(const Locale("en", "US"));
} else { } else {
context.setLocale(const Locale('ar', 'SA')); context.setLocale(const Locale('ar', 'SA'));
} }
notifyListeners(); // notifyListeners();
} }
void logout(BuildContext context) async { void logout(BuildContext context) async {

@ -1,4 +1,5 @@
import 'package:flutter/material.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/classes/consts.dart';
import 'package:mc_common_app/config/routes.dart'; import 'package:mc_common_app/config/routes.dart';
import 'package:mc_common_app/extensions/int_extensions.dart'; import 'package:mc_common_app/extensions/int_extensions.dart';
@ -74,13 +75,13 @@ class AdCard extends StatelessWidget {
adDetails.vehicle!.image == null || adDetails.vehicle!.image!.isEmpty ? "" : adDetails.vehicle!.image!.first.imageUrl!, adDetails.vehicle!.image == null || adDetails.vehicle!.image!.isEmpty ? "" : adDetails.vehicle!.image!.first.imageUrl!,
errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) { errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) {
return const SizedBox( return const SizedBox(
width: 80, width: 77,
height: 80, height: 83,
child: Icon(Icons.error_outline), child: Icon(Icons.error_outline),
); );
}, },
width: 80, width: 77,
height: 80, height: 83,
fit: BoxFit.cover, fit: BoxFit.cover,
), ),
12.width, 12.width,
@ -97,26 +98,30 @@ class AdCard extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
if (isAdsFragment && !context.read<AdVM>().isExploreAdsTapped) ...[ if (isAdsFragment && !context
.read<AdVM>()
.isExploreAdsTapped) ...[
Utils.statusContainerChip(text: adDetails.statuslabel!, chipColor: Utils.getChipColorByAdStatus(adDetails.adPostStatus!)), Utils.statusContainerChip(text: adDetails.statuslabel!, chipColor: Utils.getChipColorByAdStatus(adDetails.adPostStatus!)),
], ],
(adDetails.vehicle!.vehicleTitle ?? "").toText(fontSize: 16, isBold: true), (adDetails.vehicle!.vehicleTitle ?? "").toText(fontSize: 16, letterSpacing: -0.64, height: 25 / 16,),
Row( Row(
children: [ children: [
("${LocaleKeys.model.tr()}:").toText( ("${LocaleKeys.model.tr()}:").toText(
color: MyColors.lightTextColor, color: MyColors.lightTextColor,
letterSpacing: -0.48, height: 18 / 12,
), ),
2.width, 2.width,
(adDetails.vehicle!.modelyear!.label ?? "").toText(), (adDetails.vehicle!.modelyear!.label ?? "").toText(fontSize: 12, letterSpacing: -0.48, height: 18 / 12,),
], ],
), ),
Row( Row(
children: [ children: [
("${LocaleKeys.mileage.tr()}:").toText( ("${LocaleKeys.mileage.tr()}:").toText(
color: MyColors.lightTextColor, color: MyColors.lightTextColor,
fontSize: 12, letterSpacing: -0.48, height: 18 / 12,
), ),
2.width, 2.width,
(adDetails.vehicle!.mileage!.mileageEnd ?? "").toText(), (adDetails.vehicle!.mileage!.mileageEnd ?? "").toText(fontSize: 12, letterSpacing: -0.48, height: 18 / 12,),
], ],
), ),
], ],
@ -131,8 +136,8 @@ class AdCard extends StatelessWidget {
), ),
adDetails.createdOn != null adDetails.createdOn != null
? DateTime.parse(adDetails.createdOn!).getTimeAgo().toText( ? DateTime.parse(adDetails.createdOn!).getTimeAgo().toText(
color: MyColors.lightTextColor, color: MyColors.lightTextColor,
) )
: const SizedBox(), : const SizedBox(),
], ],
), ),
@ -146,15 +151,24 @@ class AdCard extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
children: [ children: [
(adDetails.vehicle!.demandAmount!.toInt().toString()).toText(fontSize: 16, isBold: true), (adDetails.vehicle!.demandAmount!.toInt().toString()).toText(fontSize: 19, isBold: true, letterSpacing: -1.16, height: 29/19),
2.width, 2.width,
LocaleKeys.sar.tr().toText( LocaleKeys.sar.tr().toText(
color: MyColors.lightTextColor, color: MyColors.lightTextColor,
), fontSize: 10,
letterSpacing: -0.4,height: 16/10
),
], ],
), ),
), ),
const Icon(Icons.arrow_forward) SvgPicture.asset(
MyAssets.arrowRight,
height: 9.69,
width: 13,
),
// const Icon(Icons.arrow_forward)
], ],
), ),
], ],

@ -17,6 +17,7 @@ import 'package:mc_common_app/view_models/dashboard_view_model_customer.dart';
import 'package:mc_common_app/widgets/common_widgets/custom_add_button_widget.dart'; import 'package:mc_common_app/widgets/common_widgets/custom_add_button_widget.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:sizer/sizer.dart';
class CommonAppointmentSliderWidget extends StatelessWidget { class CommonAppointmentSliderWidget extends StatelessWidget {
final Function(AppointmentListModel)? onAppointmentClick; final Function(AppointmentListModel)? onAppointmentClick;
@ -26,14 +27,14 @@ class CommonAppointmentSliderWidget extends StatelessWidget {
Widget getCarouselSliderWidget(AppType appType, AppointmentsVM appointmentsVM) { Widget getCarouselSliderWidget(AppType appType, AppointmentsVM appointmentsVM) {
return CarouselSlider.builder( return CarouselSlider.builder(
options: CarouselOptions( options: CarouselOptions(
height: appType == AppType.provider ? 110 : 140, height: appType == AppType.provider ? 121 : 140,
viewportFraction: 1.0, viewportFraction: 0.99999, // Todo: Dont do anything
enlargeCenterPage: false, enlargeCenterPage: false,
enableInfiniteScroll: false, enableInfiniteScroll: false,
), ),
itemCount: appointmentsVM.myUpComingAppointments.length, itemCount: appointmentsVM.myUpComingAppointments.length,
itemBuilder: (BuildContext context, int itemIndex, int pageViewIndex) => BuildAppointmentContainerForCustomer( itemBuilder: (BuildContext context, int itemIndex, int pageViewIndex) => BuildAppointmentContainerForCustomer(
isForHome: appType == AppType.provider, isForProvider: appType == AppType.provider,
appointmentListModel: appointmentsVM.myUpComingAppointments[itemIndex], appointmentListModel: appointmentsVM.myUpComingAppointments[itemIndex],
onTapped: () { onTapped: () {
if (appType == AppType.provider) { if (appType == AppType.provider) {
@ -140,11 +141,11 @@ class CommonAppointmentSliderWidget extends StatelessWidget {
} }
class BuildAppointmentContainerForCustomer extends StatelessWidget { class BuildAppointmentContainerForCustomer extends StatelessWidget {
final bool? isForHome; final bool isForProvider;
final AppointmentListModel? appointmentListModel; final AppointmentListModel? appointmentListModel;
final Function()? onTapped; final Function()? onTapped;
const BuildAppointmentContainerForCustomer({Key? key, this.isForHome = false, this.onTapped, required this.appointmentListModel}) : super(key: key); const BuildAppointmentContainerForCustomer({Key? key, this.isForProvider = false, this.onTapped, required this.appointmentListModel}) : super(key: key);
Widget showServices(String title, String icon, {bool isMoreText = false}) { Widget showServices(String title, String icon, {bool isMoreText = false}) {
return Row( return Row(
@ -156,7 +157,7 @@ class BuildAppointmentContainerForCustomer extends StatelessWidget {
Flexible( Flexible(
child: title.toText( child: title.toText(
fontSize: 12, fontSize: 12,
isBold: true, letterSpacing: -0.48,
color: isMoreText ? MyColors.primaryColor : MyColors.black, color: isMoreText ? MyColors.primaryColor : MyColors.black,
), ),
), ),
@ -197,78 +198,77 @@ class BuildAppointmentContainerForCustomer extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return Row(
margin: const EdgeInsets.only(bottom: 10, left: 21, right: 21), crossAxisAlignment: CrossAxisAlignment.start,
child: Column( children: [
children: [ isForProvider // need to be updated through backend
Row( ? SizedBox()
: Image.asset(
MyAssets.bnCar,
width: 46,
height: 46,
fit: BoxFit.cover,
),
8.width,
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
isForHome != null && isForHome! (AppState().currentAppType == AppType.provider ? appointmentListModel!.branchName ?? "" : appointmentListModel!.branchName ?? "")
? Image.asset( .toText(color: MyColors.greyColor, fontSize: 12, letterSpacing: 0, height: 19 / 12),
MyAssets.bnCar, (AppState().currentAppType == AppType.provider ? appointmentListModel!.customerName ?? "" : appointmentListModel!.branchName ?? "")
width: 56, .toText(color: MyColors.black, fontSize: 16, letterSpacing: -0.64, height: 24 / 16),
height: 56, Row(
fit: BoxFit.fill, children: [
).toCircle(borderRadius: 100) !isForProvider ? MyAssets.miniClock.buildSvg(height: 12) : SizedBox(),
: Image.asset( 2.width,
MyAssets.bnCar, "${isForProvider ? "Appt. on:" : ""} ${appointmentListModel!.duration ?? ""} ${appointmentListModel!.appointmentDate!.toFormattedDateWithoutTime()}"
width: 80, .toText(color: MyColors.lightTextColor, fontSize: 12, letterSpacing: -0.48, height: 19 / 12),
height: 85, ],
fit: BoxFit.cover, ),
), 8.height,
8.width, !isForProvider
Expanded( ? Row(
child: Column( mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.end,
mainAxisAlignment: MainAxisAlignment.start,
children: [
(AppState().currentAppType == AppType.provider ? appointmentListModel!.customerName ?? "" : appointmentListModel!.branchName ?? "").toText(color: MyColors.black, isBold: true, fontSize: 16),
Row(
children: [ children: [
MyAssets.miniClock.buildSvg(height: 12), LocaleKeys.appointment_details.tr().toText(
2.width, color: MyColors.primaryColor,
"${appointmentListModel!.duration ?? ""} ${appointmentListModel!.appointmentDate!.toFormattedDateWithoutTime()}".toText( isUnderLine: true,
color: MyColors.lightTextColor, fontSize: 14,
fontSize: 12, letterSpacing: -0.56,
),
SvgPicture.asset(
MyAssets.arrowRight,
height: 9.69,
width: 13,
), ),
], ],
), )
9.height, : Row(
isForHome != null && isForHome! crossAxisAlignment: CrossAxisAlignment.end,
? Row( children: [
mainAxisAlignment: MainAxisAlignment.spaceBetween, Expanded(
crossAxisAlignment: CrossAxisAlignment.end, child: Column(
children: [ children: buildServicesFromAppointment(appointmentListModel: appointmentListModel!),
"Appointment Details".toText(
color: MyColors.primaryColor,
isUnderLine: true,
isBold: true,
fontSize: 14,
),
const Icon(Icons.arrow_forward),
],
)
: Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Expanded(
child: Column(
children: buildServicesFromAppointment(appointmentListModel: appointmentListModel!),
),
),
const Icon(
Icons.arrow_forward,
),
],
), ),
], ),
), //ic_arrow_right.svg
), SvgPicture.asset(
MyAssets.arrowRight,
height: 9.69,
width: 13,
),
],
),
], ],
), ),
], ),
).onPress(onTapped!).toWhiteContainer(width: double.infinity, allPading: 12), ],
); ).onPress(onTapped!).toWhiteContainer(
width: double.infinity,
allPading: 12,
);
} }
} }

@ -17,9 +17,14 @@ import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
class SettingOptionsLanguage extends StatelessWidget { class SettingOptionsLanguage extends StatefulWidget {
const SettingOptionsLanguage({super.key}); const SettingOptionsLanguage({super.key});
@override
State<SettingOptionsLanguage> createState() => _SettingOptionsLanguageState();
}
class _SettingOptionsLanguageState extends State<SettingOptionsLanguage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
@ -87,6 +92,9 @@ class SettingOptionsLanguage extends StatelessWidget {
isForLanguage: true, isForLanguage: true,
onTap: () { onTap: () {
context.read<UserVM>().changeLanguage(context); context.read<UserVM>().changeLanguage(context);
Future.delayed(Duration(seconds: 1), () {
setState(() {});
});
}, },
).toWhiteContainer(width: double.infinity, pading: const EdgeInsets.all(12), borderRadius: 0), ).toWhiteContainer(width: double.infinity, pading: const EdgeInsets.all(12), borderRadius: 0),
10.height, 10.height,

@ -30,6 +30,8 @@ class BranchDetailCard extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
print("Provider Image Title" + title);
print("Provider Image URL" + providerImageUrl);
return Padding( return Padding(
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
// padding: const EdgeInsets.only( // padding: const EdgeInsets.only(

@ -17,12 +17,11 @@ class ViewAllWidget extends StatelessWidget {
padding: const EdgeInsets.only(bottom: 7), padding: const EdgeInsets.only(bottom: 7),
child: Row( child: Row(
children: [ children: [
Expanded(child: title.toText(isBold: true, fontSize: 18)), Expanded(child: title.toText( fontSize: 18, isUpperCase: true)),
InkWell( InkWell(
onTap: onSubtitleTapped, onTap: onSubtitleTapped,
child: subTitle.toText( child: subTitle.toText(
fontSize: 11, fontSize: 11,
isBold: true,
color: MyColors.primaryColor, color: MyColors.primaryColor,
textDecoration: TextDecoration.underline, textDecoration: TextDecoration.underline,
), ),

@ -24,7 +24,8 @@ extension ExtendedText on Widget {
} }
extension ContainerExt on Widget { extension ContainerExt on Widget {
Widget toWhiteContainer({required double width, double? allPading, EdgeInsets? pading, EdgeInsets? margin, VoidCallback? onTap, Color? backgroundColor, bool isBorderRequired = false, double borderRadius = 0}) { Widget toWhiteContainer(
{required double width, double? allPading, EdgeInsets? pading, EdgeInsets? margin, VoidCallback? onTap, Color? backgroundColor, bool isBorderRequired = false, double borderRadius = 0}) {
return InkWell( return InkWell(
onTap: onTap, onTap: onTap,
child: Container( child: Container(
@ -83,12 +84,12 @@ extension ContainerExt on Widget {
boxShadow: !isShadowEnabled boxShadow: !isShadowEnabled
? null ? null
: [ : [
BoxShadow( BoxShadow(
color: const Color(0xff000000).withOpacity(.05), color: const Color(0xff000000).withOpacity(.05),
blurRadius: 26, blurRadius: 26,
offset: const Offset(0, -3), offset: const Offset(0, -3),
), ),
], ],
), ),
padding: padding ?? EdgeInsets.all(paddingAll), padding: padding ?? EdgeInsets.all(paddingAll),
margin: margin ?? EdgeInsets.all(marginAll), margin: margin ?? EdgeInsets.all(marginAll),
@ -233,7 +234,8 @@ 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); 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}) { // Widget onTap(VoidCallback onTap, {double corners = 0}) {
// return Clickable.widget(child: this, corners: corners, onTap: onTap); // return Clickable.widget(child: this, corners: corners, onTap: onTap);
@ -360,6 +362,9 @@ extension BuildSVG on String? {
return SizedBox(height: height, width: width, child: const Icon(Icons.signal_wifi_connected_no_internet_4_outlined)); return SizedBox(height: height, width: width, child: const Icon(Icons.signal_wifi_connected_no_internet_4_outlined));
}, },
loadingBuilder: (BuildContext context, Widget? child, ImageChunkEvent? imageChunk) { loadingBuilder: (BuildContext context, Widget? child, ImageChunkEvent? imageChunk) {
if (imageChunk == null) {
return child!;
}
return const Center( return const Center(
child: CircularProgressIndicator( child: CircularProgressIndicator(
strokeWidth: 0.5, strokeWidth: 0.5,
@ -377,7 +382,12 @@ extension BuildSVG on String? {
extension LocaleSetup on MultiProvider { extension LocaleSetup on MultiProvider {
Widget setupLocale() { Widget setupLocale() {
return EasyLocalization(supportedLocales: MyLocales.supportedLocales, fallbackLocale: MyLocales.fallBackLocale, startLocale: MyLocales.startLocale, assetLoader: MyLocales.assetLoader, path: MyLocales.localesAssetPath, child: this); return EasyLocalization(supportedLocales: MyLocales.supportedLocales,
fallbackLocale: MyLocales.fallBackLocale,
startLocale: MyLocales.startLocale,
assetLoader: MyLocales.assetLoader,
path: MyLocales.localesAssetPath,
child: this);
} }
} }

@ -88,49 +88,34 @@ flutter:
fonts: fonts:
- asset: assets/fonts/Poppins-Thin.ttf - asset: assets/fonts/Poppins-Thin.ttf
weight: 100 weight: 100
style: normal
- asset: assets/fonts/Poppins-ExtraLight.ttf - asset: assets/fonts/Poppins-ExtraLight.ttf
weight: 200 weight: 200
style: normal
- asset: assets/fonts/Poppins-Light.ttf - asset: assets/fonts/Poppins-Light.ttf
weight: 300 weight: 300
style: normal
- asset: assets/fonts/Poppins-Regular.ttf - asset: assets/fonts/Poppins-Regular.ttf
weight: 400 weight: 400
style: normal
- asset: assets/fonts/Poppins-Medium.ttf - asset: assets/fonts/Poppins-Medium.ttf
weight: 500 weight: 500
style: normal
- asset: assets/fonts/Poppins-SemiBold.ttf - asset: assets/fonts/Poppins-SemiBold.ttf
weight: 600 weight: 600
style: normal
- asset: assets/fonts/Poppins-Bold.ttf - asset: assets/fonts/Poppins-Bold.ttf
weight: 700 weight: 700
style: normal
- asset: assets/fonts/Poppins-ExtraBold.ttf - asset: assets/fonts/Poppins-ExtraBold.ttf
weight: 800 weight: 800
style: normal
- asset: assets/fonts/Poppins-Black.ttf - asset: assets/fonts/Poppins-Black.ttf
weight: 900 weight: 900
style: normal
- asset: assets/fonts/Poppins-Italic.ttf - asset: assets/fonts/Poppins-Italic.ttf
weight: 400 weight: 400
style: italic
- asset: assets/fonts/Poppins-MediumItalic.ttf - asset: assets/fonts/Poppins-MediumItalic.ttf
weight: 500 weight: 500
style: italic
- asset: assets/fonts/Poppins-SemiBoldItalic.ttf - asset: assets/fonts/Poppins-SemiBoldItalic.ttf
weight: 600 weight: 600
style: italic
- asset: assets/fonts/Poppins-BoldItalic.ttf - asset: assets/fonts/Poppins-BoldItalic.ttf
weight: 700 weight: 700
style: italic
- asset: assets/fonts/Poppins-ExtraBoldItalic.ttf - asset: assets/fonts/Poppins-ExtraBoldItalic.ttf
weight: 800 weight: 800
style: italic
- asset: assets/fonts/Poppins-BlackItalic.ttf - asset: assets/fonts/Poppins-BlackItalic.ttf
weight: 900 weight: 900
style: italic
- family: GessTwo - family: GessTwo
fonts: fonts:
- asset: assets/fonts/GESS-Two-Light.otf - asset: assets/fonts/GESS-Two-Light.otf

Loading…
Cancel
Save