Dark mode enabled

haroon_dev
haroon amjad 4 hours ago
parent 074c060e36
commit f46b3f745f

@ -0,0 +1,3 @@
<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8.76629 0.292994C8.94577 0.52652 8.97196 0.843482 8.83323 1.10329C8.24927 2.19693 7.91792 3.4461 7.91792 4.77489C7.91792 9.0867 11.4133 12.5821 15.7251 12.5821C17.0539 12.5821 18.3031 12.2508 19.3967 11.6668C19.6565 11.5281 19.9735 11.5543 20.207 11.7337C20.4406 11.9132 20.5474 12.2128 20.4802 12.4995C19.4056 17.085 15.2909 20.5 10.3769 20.5C4.64589 20.5 0 15.8541 0 10.1232C0 5.20909 3.41505 1.09448 8.0005 0.0198166C8.28726 -0.0473898 8.58681 0.0594678 8.76629 0.292994Z" fill="#8F9AA3"/>
</svg>

After

Width:  |  Height:  |  Size: 610 B

@ -1581,5 +1581,6 @@
"invalidInsurance": "لا يمكنك إجراء الدفع عبر الإنترنت لأنه ليس لديك تأمين صالح.",
"continueCash": "متابعة الدفع نقدًا",
"timeFor": "الوقت",
"hmgPolicies": "سياسات مجموعة الحبيب الطبية"
"hmgPolicies": "سياسات مجموعة الحبيب الطبية",
"darkMode": "المظهر الداكن"
}

@ -1574,5 +1574,6 @@
"invalidInsurance": "You cannot make online payment because you do not have a valid insurance.",
"continueCash": "Continue as cash",
"timeFor": "Time For",
"hmgPolicies": "HMG Policies"
"hmgPolicies": "HMG Policies",
"darkMode": "Dark Mode"
}

@ -195,7 +195,7 @@ class ApiClientImp implements ApiClient {
}
// body['TokenID'] = "@dm!n";
// body['PatientID'] = 4773922;
// body['PatientID'] = 4772997;
// body['PatientTypeID'] = 1;
// body['PatientOutSA'] = 0;
// body['SessionID'] = "45786230487560q";

@ -331,6 +331,7 @@ class AppAssets {
static const String doctorResponseIcon = '$svgBasePath/doctor_response_icon.svg';
static const String changeLanguageHomePageIcon = '$svgBasePath/change_language_home_page.svg';
static const String aiOverView = '$svgBasePath/ai_overview.svg';
static const String darkModeIcon = '$svgBasePath/dark_mode_icon.svg';
// PNGS //
static const String hmgLogo = '$pngBasePath/hmg_logo.png';

@ -664,10 +664,12 @@ class Utils {
double width = 24,
double height = 24,
BoxFit fit = BoxFit.cover,
bool applyThemeColor = true,
}) {
final Color? resolvedColor = iconColor ?? (applyThemeColor && AppColors.isDarkMode ? AppColors.textColor : null);
return SvgPicture.asset(
icon,
colorFilter: iconColor != null ? ColorFilter.mode(isDisabled ? iconColor.withOpacity(0.5) : iconColor, BlendMode.srcIn) : null,
colorFilter: resolvedColor != null ? ColorFilter.mode(isDisabled ? resolvedColor.withOpacity(0.5) : resolvedColor, BlendMode.srcIn) : null,
width: width,
height: height,
fit: fit,
@ -801,11 +803,13 @@ class Utils {
double? fontSize,
double? letterSpacing,
FontWeight? fontWeight,
Color iconColor = AppColors.textColor,
Color textColor = AppColors.blackColor,
Color? iconColor,
Color? textColor,
bool isSaudiCurrency = true,
bool isExpanded = true,
}) {
final resolvedIconColor = iconColor ?? AppColors.textColor;
final resolvedTextColor = textColor ?? AppColors.blackColor;
return RichText(
maxLines: 1,
text: TextSpan(
@ -813,13 +817,13 @@ class Utils {
WidgetSpan(
alignment: PlaceholderAlignment.baseline,
baseline: TextBaseline.alphabetic,
child: Utils.buildSvgWithAssets(icon: AppAssets.saudi_riyal_icon, width: iconSize.h, height: iconSize.h, iconColor: iconColor),
child: Utils.buildSvgWithAssets(icon: AppAssets.saudi_riyal_icon, width: iconSize.h, height: iconSize.h, iconColor: resolvedIconColor),
),
TextSpan(
// text: NumberFormat.currency(locale: 'en_US', symbol: " ", decimalDigits: 0).format(habibWalletAmount),
text: " ${habibWalletAmount.toStringAsFixed(2)}",
style: TextStyle(
color: textColor,
color: resolvedTextColor,
fontSize: fontSize ?? 32.f,
letterSpacing: letterSpacing ?? -4,
fontFamily: "Poppins",

@ -234,7 +234,7 @@ extension EmailValidator on String {
TextOverflow? textOverflow,
String? fontFamily,
double? letterSpacing = -0.4,
Color decorationColor = AppColors.errorColor}) =>
Color? decorationColor}) =>
Text(
this,
maxLines: maxlines,
@ -249,7 +249,7 @@ extension EmailValidator on String {
fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal),
decoration: isUnderLine ? TextDecoration.underline : null,
fontFamily: fontFamily ?? (isEnglishOnly ? "Poppins" : getIt.get<AppState>().getLanguageCode() == "ar" ? 'GESSTwo' : 'Poppins'),
decorationColor: decorationColor),
decorationColor: decorationColor ?? AppColors.errorColor),
);
Widget toText17({bool isEnglishOnly = false, Color? color, bool isBold = false, bool isCenter = false}) => Text(

@ -28,10 +28,10 @@ extension WidgetExtensions on Widget {
Widget toShimmer({bool isShow = true, bool isTransparent = false}) => isShow
? Shimmer.fromColors(
baseColor: Color(0xffb9bebe),
highlightColor: Colors.white,
baseColor: AppColors.shimmerBaseColor,
highlightColor: AppColors.shimmerHighlightColor,
child: Container(
color: isTransparent ? Colors.transparent : Colors.white.withOpacity(0.3),
color: isTransparent ? Colors.transparent : AppColors.whiteColor.withOpacity(0.3),
child: this,
),
)
@ -41,14 +41,14 @@ extension WidgetExtensions on Widget {
Widget toShimmer2({bool isShow = true, double radius = 20, double? width, double? height}) => isShow
? Shimmer.fromColors(
baseColor: const Color(0xffe8eff0),
highlightColor: Colors.white,
baseColor: AppColors.shimmerBaseColor,
highlightColor: AppColors.shimmerHighlightColor,
child: ClipRRect(
borderRadius: BorderRadius.circular(radius),
child: Container(
width: width,
height: height,
color: Colors.white,
color: AppColors.whiteColor,
child: this,
),
),
@ -69,7 +69,7 @@ extension WidgetExtensions on Widget {
return Container(
padding: disablePadding ? EdgeInsets.zero : const EdgeInsets.only(top: 15, bottom: 15, left: 14, right: 14),
decoration: BoxDecoration(
color: Colors.white,
color: AppColors.whiteColor,
borderRadius: BorderRadius.circular(radius),
boxShadow: [
BoxShadow(

@ -40,7 +40,7 @@ class VitalSignUiModel {
}
if (s.contains('high')) {
return const VitalSignUiModel(
return VitalSignUiModel(
iconBg: AppColors.chipSecondaryLightRedColor,
iconFg: AppColors.primaryRedColor,
chipBg: AppColors.chipSecondaryLightRedColor,

@ -1,8 +1,18 @@
import 'package:flutter/foundation.dart';
import 'package:hmg_patient_app_new/theme/colors.dart';
class ProfileSettingsViewModel extends ChangeNotifier {
bool _isDarkMode = false;
void notify(){
bool get isDarkMode => _isDarkMode;
void toggleDarkMode(bool value) {
_isDarkMode = value;
AppColors.isDarkMode = value;
notifyListeners();
}
void notify() {
notifyListeners();
}
}

@ -1573,7 +1573,8 @@ abstract class LocaleKeys {
static const invalidEligibility = 'invalidEligibility';
static const invalidInsurance = 'invalidInsurance';
static const continueCash = 'continueCash';
static const timeFor = 'timeFor';
static const hmgPolicies = 'hmgPolicies';
static const darkMode = 'darkMode';
static const timeFor = 'Time for';
}

@ -62,6 +62,9 @@ Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
getIt.get<LoggerService>().logInfo("Firebase backgroundMessageHandler Main!!!");
}
// flutter3_32 pub run easy_localization:generate -O ./lib/generated -f keys -o locale_keys.g.dart --source-dir ./assets/langs
class MyHttpOverrides extends HttpOverrides {
@override
HttpClient createHttpClient(SecurityContext? context) {
@ -247,27 +250,35 @@ class MyApp extends StatelessWidget {
return Sizer(
builder: (context, orientation, deviceType) {
// SizeConfig().init(constraints, orientation);
return MaterialApp(
// title: 'Dr. AlHabib',
title: 'Dr. AlHabib Beta',
builder: (context, mchild) {
return MediaQuery(
data: MediaQuery.of(context).copyWith(
textScaler: TextScaler.noScaling,
alwaysUse24HourFormat: true,
),
child: mchild!,
return Consumer<ProfileSettingsViewModel>(
builder: (context, profileVm, _) {
final isArabic = EasyLocalization.of(context)?.locale.languageCode == "ar";
return MaterialApp(
key: ValueKey('app_theme_${profileVm.isDarkMode}'),
// title: 'Dr. AlHabib',
title: 'Dr. AlHabib Beta',
builder: (context, mchild) {
return MediaQuery(
data: MediaQuery.of(context).copyWith(
textScaler: TextScaler.noScaling,
alwaysUse24HourFormat: true,
),
child: mchild!,
);
},
showSemanticsDebugger: false,
debugShowCheckedModeBanner: false,
localizationsDelegates: context.localizationDelegates,
supportedLocales: context.supportedLocales,
locale: context.locale,
initialRoute: AppRoutes.initialRoute,
routes: AppRoutes.routes,
theme: AppTheme.getTheme(isArabic),
darkTheme: AppTheme.getDarkTheme(isArabic),
themeMode: profileVm.isDarkMode ? ThemeMode.dark : ThemeMode.light,
navigatorKey: getIt.get<NavigationService>().navigatorKey,
);
},
showSemanticsDebugger: false,
debugShowCheckedModeBanner: false,
localizationsDelegates: context.localizationDelegates,
supportedLocales: context.supportedLocales,
locale: context.locale,
initialRoute: AppRoutes.initialRoute,
routes: AppRoutes.routes,
theme: AppTheme.getTheme(EasyLocalization.of(context)?.locale.languageCode == "ar"),
navigatorKey: getIt.get<NavigationService>().navigatorKey,
);
},
);

@ -171,7 +171,7 @@ class _ActiveMedicationPageState extends State<ActiveMedicationPage> {
offset: const Offset(0, -4),
child: Text(
_getSuffix(selectedDate.day),
style: const TextStyle(
style: TextStyle(
fontSize: 12,
color: AppColors.textColor,
fontWeight: FontWeight.w500,
@ -181,7 +181,7 @@ class _ActiveMedicationPageState extends State<ActiveMedicationPage> {
),
TextSpan(
text: " ${DateFormat.MMMM().format(selectedDate)}",
style: const TextStyle(
style: TextStyle(
color: AppColors.textColor,
fontSize: 16,
fontWeight: FontWeight.w500,
@ -278,7 +278,7 @@ class _ActiveMedicationPageState extends State<ActiveMedicationPage> {
),
],
).paddingOnly(left: 16, right: 16),
const Divider(
Divider(
color: AppColors.greyColor),
GestureDetector(
onTap: () => showDoseDialog(med),
@ -330,7 +330,7 @@ class _ActiveMedicationPageState extends State<ActiveMedicationPage> {
],
).paddingAll(16),
),
const Divider(
Divider(
color: AppColors.greyColor),
_buildButtons(),
],
@ -657,7 +657,7 @@ class _ActiveMedicationPageState extends State<ActiveMedicationPage> {
builder: (_) => Container(
width: double.infinity,
height: 460.h,
decoration: const BoxDecoration(
decoration: BoxDecoration(
color: AppColors.bottomSheetBgColor,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(24),

@ -56,7 +56,7 @@ class AllergiesListPage extends StatelessWidget {
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.allergy_info_icon, width: 36.w, height: 36.h, fit: BoxFit.contain).toShimmer2(isShow: true),
Utils.buildSvgWithAssets(icon: AppAssets.allergy_info_icon, width: 36.w, height: 36.h, fit: BoxFit.contain, applyThemeColor: false).toShimmer2(isShow: true),
SizedBox(width: 16.h),
Expanded(
child: Column(
@ -100,7 +100,7 @@ class AllergiesListPage extends StatelessWidget {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.allergy_info_icon, width: 36.w, height: 36.h, fit: BoxFit.contain),
Utils.buildSvgWithAssets(icon: AppAssets.allergy_info_icon, width: 36.w, height: 36.h, fit: BoxFit.contain, applyThemeColor: false),
SizedBox(height: 16.h),
Row(
crossAxisAlignment: CrossAxisAlignment.start,

@ -241,13 +241,13 @@ class _AppointmentDetailsPageState extends State<AppointmentDetailsPage> {
},
backgroundColor: AppColors.successColor,
borderColor: AppColors.successColor,
textColor: AppColors.whiteColor,
textColor: Colors.white,
fontSize: 14.f,
fontWeight: FontWeight.w500,
borderRadius: 12.r,
height: 40.h,
icon: AppAssets.confirm_appointment_icon,
iconColor: AppColors.whiteColor,
iconColor: Colors.white,
iconSize: 16.h,
)
: SizedBox.shrink())
@ -305,16 +305,16 @@ class _AppointmentDetailsPageState extends State<AppointmentDetailsPage> {
}
},
text: LocaleKeys.getDirections.tr(context: context),
backgroundColor: AppColors.textColor.withValues(alpha: 0.8),
backgroundColor: AppColors.bookAppointment.withValues(alpha: 0.8),
borderColor: AppointmentType.getNextActionButtonColor(widget.patientAppointmentHistoryResponseModel.nextAction).withValues(alpha: 0.01),
textColor: AppColors.whiteColor,
textColor: Colors.white,
fontSize: 14.f,
fontWeight: FontWeight.w500,
borderRadius: 12.r,
padding: EdgeInsets.symmetric(horizontal: 10.w),
height: 40.h,
icon: AppAssets.directions_icon,
iconColor: AppColors.whiteColor,
iconColor: Colors.white,
iconSize: 14.h,
).paddingAll(12.h),
),
@ -353,7 +353,7 @@ class _AppointmentDetailsPageState extends State<AppointmentDetailsPage> {
child: Row(
mainAxisSize: MainAxisSize.max,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.prescription_reminder_icon, width: 35.h, height: 35.h),
Utils.buildSvgWithAssets(icon: AppAssets.prescription_reminder_icon, width: 35.h, height: 35.h, applyThemeColor: false),
SizedBox(width: 8.h),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
@ -841,15 +841,15 @@ class _AppointmentDetailsPageState extends State<AppointmentDetailsPage> {
},
backgroundColor: AppColors.successColor,
borderColor: AppColors.successColor,
textColor: AppColors.whiteColor,
fontSize: 16.f,
textColor: Colors.white,
fontSize: 16.f,
fontWeight: FontWeight.w500,
borderRadius: 12.r,
padding: EdgeInsets.symmetric(horizontal: 10.w),
height: 50.h,
icon: AppAssets.add_icon,
iconColor: AppColors.whiteColor,
iconSize: 18.h,
iconColor: Colors.white,
iconSize: 18.h,
).paddingSymmetrical(16.h, 24.h)
: SizedBox.shrink()
: CustomButton(
@ -860,14 +860,14 @@ class _AppointmentDetailsPageState extends State<AppointmentDetailsPage> {
backgroundColor: AppointmentType.getNextActionButtonColor(widget.patientAppointmentHistoryResponseModel.nextAction),
borderColor:
AppointmentType.getNextActionButtonColor(widget.patientAppointmentHistoryResponseModel.nextAction).withOpacity(0.01),
textColor: widget.patientAppointmentHistoryResponseModel.nextAction == 15 ? AppColors.textColor : AppColors.whiteColor,
textColor: widget.patientAppointmentHistoryResponseModel.nextAction == 15 ? AppColors.textColor : Colors.white,
fontSize: 16.f,
fontWeight: FontWeight.w500,
borderRadius: 12.r,
padding: EdgeInsets.symmetric(horizontal: 10.w),
height: 56.h,
icon: AppointmentType.getNextActionIcon(widget.patientAppointmentHistoryResponseModel.nextAction),
iconColor: AppColors.whiteColor,
iconColor: Colors.white,
iconSize: 18.h,
).paddingSymmetrical(16.h, 24.h),
],
@ -904,7 +904,7 @@ class _AppointmentDetailsPageState extends State<AppointmentDetailsPage> {
},
backgroundColor: AppColors.primaryRedColor,
borderColor: AppColors.primaryRedColor,
textColor: AppColors.whiteColor,
textColor: Colors.white,
fontSize: 16.f,
fontWeight: FontWeight.w500,
borderRadius: 12.r,

@ -318,6 +318,7 @@ class _AppointmentPaymentPageState extends State<AppointmentPaymentPage> {
width: 200.h,
height: 80.h,
fit: BoxFit.contain,
applyThemeColor: false
).paddingSymmetrical(24.h, 0.h).onPress(() {
// payfortVM.setIsApplePayConfigurationLoading(true);
if (Utils.havePrivilege(103)) {

@ -96,10 +96,10 @@ class AppointmentCard extends StatelessWidget {
children: [
AppCustomChipWidget(
icon: isLoading ? AppAssets.walkin_appointment_icon : (isLiveCare ? AppAssets.small_livecare_icon : AppAssets.walkin_appointment_icon),
iconColor: isLoading ? AppColors.textColor : (isLiveCare ? AppColors.whiteColor : AppColors.textColor),
iconColor: isLoading ? AppColors.textColor : (isLiveCare ? Colors.white : AppColors.textColor),
labelText: isLoading ? LocaleKeys.walkin.tr(context: context) : (isLiveCare ? LocaleKeys.livecare.tr(context: context) : LocaleKeys.walkin.tr(context: context)),
backgroundColor: isLoading ? AppColors.greyColor : (isLiveCare ? AppColors.successColor : AppColors.greyColor),
textColor: isLoading ? AppColors.textColor : (isLiveCare ? AppColors.whiteColor : AppColors.textColor),
textColor: isLoading ? AppColors.textColor : (isLiveCare ? Colors.white : AppColors.textColor),
).toShimmer2(isShow: isLoading),
AppCustomChipWidget(
labelText:
@ -145,7 +145,7 @@ class AppointmentCard extends StatelessWidget {
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.rating_icon, width: 15.w, height: 15.h),
Utils.buildSvgWithAssets(icon: AppAssets.rating_icon, width: 15.w, height: 15.h, iconColor: AppColors.ratingColorYellow),
SizedBox(height: 2.h),
(isFoldable || isTablet)
? "${patientAppointmentHistoryResponseModel.decimalDoctorRate}".toText9(isBold: true, color: AppColors.textColor)

@ -68,7 +68,7 @@ class AppointmentDoctorCard extends StatelessWidget {
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.rating_icon, width: 15.w, height: 15.h),
Utils.buildSvgWithAssets(icon: AppAssets.rating_icon, width: 15.w, height: 15.h, iconColor: AppColors.ratingColorYellow),
SizedBox(height: 2.h),
"${patientAppointmentHistoryResponseModel.decimalDoctorRate ?? 0.0}".toText11(isBold: true, color: AppColors.textColor),
],
@ -115,13 +115,13 @@ class AppointmentDoctorCard extends StatelessWidget {
icon: !patientAppointmentHistoryResponseModel.isLiveCareAppointment!
? AppAssets.walkin_appointment_icon
: AppAssets.small_livecare_icon,
iconColor: !patientAppointmentHistoryResponseModel.isLiveCareAppointment! ? AppColors.textColor : AppColors.whiteColor,
iconColor: !patientAppointmentHistoryResponseModel.isLiveCareAppointment! ? AppColors.textColor : Colors.white,
labelText: patientAppointmentHistoryResponseModel.isLiveCareAppointment!
? LocaleKeys.livecare.tr(context: context)
: LocaleKeys.walkin.tr(context: context),
backgroundColor:
!patientAppointmentHistoryResponseModel.isLiveCareAppointment! ? AppColors.greyColor : AppColors.successColor,
textColor: !patientAppointmentHistoryResponseModel.isLiveCareAppointment! ? AppColors.textColor : AppColors.whiteColor,
textColor: !patientAppointmentHistoryResponseModel.isLiveCareAppointment! ? AppColors.textColor : Colors.white,
),
],
),

@ -56,6 +56,7 @@ class HospitalListItem extends StatelessWidget {
children: [
Utils.buildSvgWithAssets(
icon: (hospitalData?.isHMC == true) ? AppAssets.hmc : AppAssets.hmg,
applyThemeColor: false,
).paddingOnly(right: 10),
Expanded(
child: Text(

@ -63,6 +63,7 @@ class RegionListItem extends StatelessWidget {
iconSize: 14.h,
icon: svgPath,
iconHasColor: false,
applyThemeColor: false,
richText: RichText(
text: TextSpan(
text: count,

@ -7,6 +7,7 @@ import 'package:hmg_patient_app_new/extensions/widget_extensions.dart';
import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_view_model.dart';
import 'package:hmg_patient_app_new/features/my_appointments/appointment_via_region_viewmodel.dart';
import 'package:hmg_patient_app_new/presentation/appointments/widgets/region_bottomsheet/region_list_item.dart' show RegionListItem;
import 'package:hmg_patient_app_new/theme/colors.dart';
import 'package:provider/provider.dart';
import '../../../../widgets/common_bottom_sheet.dart';
@ -52,8 +53,8 @@ class _RegionBottomSheetBodyState extends State<RegionBottomSheetBody> {
if (myAppointmentsVM.isRegionListLoading) {
return Container(
height: MediaQuery.of(context).size.height * 0.3,
decoration: const BoxDecoration(
color: Colors.white,
decoration: BoxDecoration(
color: AppColors.whiteColor,
borderRadius: BorderRadius.vertical(top: Radius.circular(16)),
),
child: Center(

@ -109,7 +109,7 @@ class AskDoctorAppointmentCard extends StatelessWidget {
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.rating_icon, width: 15.w, height: 15.h),
Utils.buildSvgWithAssets(icon: AppAssets.rating_icon, width: 15.w, height: 15.h, applyThemeColor: false),
SizedBox(height: 2.h),
"${askDoctorAppointmentHistoryList.decimalDoctorRate}".toText11(isBold: true, color: AppColors.textColor),
],

@ -85,7 +85,7 @@ class _RegisterNew extends State<RegisterNew> {
Directionality(
textDirection: Directionality.of(context),
child: Container(
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(24)),
decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(24)),
padding: EdgeInsets.symmetric(horizontal: 16.h),
child: Column(
children: [

@ -76,7 +76,7 @@ class _RegisterNew extends State<RegisterNewStep2> {
LocaleKeys.personalDetailsVerification.tr(context: context).toText26(color: AppColors.textColor, weight: FontWeight.w600, letterSpacing: -2),
SizedBox(height: 24.h),
Container(
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(24)),
decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(24)),
padding: EdgeInsets.only(left: 16.h, right: 16.h),
child: Column(
children: [

@ -230,7 +230,7 @@ class _BookAppointmentPageState extends State<BookAppointmentPage> {
children: [
Row(
children: [
Utils.buildSvgWithAssets(icon: AppAssets.search_by_clinic_icon, width: 40.h, height: 40.h),
Utils.buildSvgWithAssets(icon: AppAssets.search_by_clinic_icon, width: 40.h, height: 40.h, applyThemeColor: false),
SizedBox(width: 12.h),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
@ -262,7 +262,7 @@ class _BookAppointmentPageState extends State<BookAppointmentPage> {
children: [
Row(
children: [
Utils.buildSvgWithAssets(icon: AppAssets.search_by_doctor_icon, width: 40.h, height: 40.h),
Utils.buildSvgWithAssets(icon: AppAssets.search_by_doctor_icon, width: 40.h, height: 40.h, applyThemeColor: false),
SizedBox(width: 12.h),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
@ -292,7 +292,7 @@ class _BookAppointmentPageState extends State<BookAppointmentPage> {
children: [
Row(
children: [
Utils.buildSvgWithAssets(icon: AppAssets.search_by_region_icon, width: 40.h, height: 40.h),
Utils.buildSvgWithAssets(icon: AppAssets.search_by_region_icon, width: 40.h, height: 40.h, applyThemeColor: false),
SizedBox(width: 12.h),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
@ -336,9 +336,9 @@ class _BookAppointmentPageState extends State<BookAppointmentPage> {
children: [
Row(
children: [
Utils.buildSvgWithAssets(icon: AppAssets.search_by_clinic_icon, width: 40.h, height: 40.h),
SizedBox(width: 12.h),
Column(
Utils.buildSvgWithAssets(icon: AppAssets.search_by_clinic_icon, width: 40.h, height: 40.h, applyThemeColor: false),
SizedBox(width: 12.h),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
LocaleKeys.immediateConsultation.tr(context: context).toText14(color: AppColors.textColor, weight: FontWeight.w500),
@ -378,9 +378,9 @@ class _BookAppointmentPageState extends State<BookAppointmentPage> {
children: [
Row(
children: [
Utils.buildSvgWithAssets(icon: AppAssets.search_by_doctor_icon, width: 40.h, height: 40.h),
SizedBox(width: 12.h),
Column(
Utils.buildSvgWithAssets(icon: AppAssets.search_by_doctor_icon, width: 40.h, height: 40.h, applyThemeColor: false),
SizedBox(width: 12.h),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
LocaleKeys.scheduledConsultation.tr(context: context).toText14(color: AppColors.textColor, weight: FontWeight.w500),
@ -400,30 +400,6 @@ class _BookAppointmentPageState extends State<BookAppointmentPage> {
),
);
}),
// SizedBox(height: 16.h),
// Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.1), height: 1.h),
// SizedBox(height: 16.h),
// Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
// children: [
// Row(
// children: [
// Utils.buildSvgWithAssets(icon: AppAssets.search_by_region_icon, width: 40.h, height: 40.h),
// SizedBox(width: 12.h),
// Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: [
// LocaleKeys.pharmaLiveCare.tr(context: context).toText14(color: AppColors.textColor, weight: FontWeight.w500),
// "".toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500),
// ],
// ),
// ],
// ),
// Transform.flip(flipX: appState.isArabic(), child: Utils.buildSvgWithAssets(icon: AppAssets.forward_arrow_icon, iconColor: AppColors.textColor, width: 40.h, height: 40.h)),
// ],
// ).onPress(() {
// openRegionListBottomSheet(context, RegionBottomSheetType.FOR_REGION);
// }),
],
),
),

@ -159,7 +159,7 @@ class DoctorsFilters extends StatelessWidget{
Spacer(),
DecoratedBox(
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(
color: Colors.white,
color: AppColors.whiteColor,
customBorder: BorderRadius.only(topLeft: Radius.circular(24.h), topRight: Radius.circular(24.h)) ,
),

@ -106,6 +106,7 @@ class DoctorProfilePage extends StatelessWidget {
width: 48.w,
height: 48.h,
fit: BoxFit.contain,
applyThemeColor: false
),
SizedBox(height: 16.h),
"Ratings".toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor),
@ -132,6 +133,7 @@ class DoctorProfilePage extends StatelessWidget {
width: 48.w,
height: 48.h,
fit: BoxFit.contain,
applyThemeColor: false
),
SizedBox(height: 16.h),
"Reviews".toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor),
@ -227,14 +229,14 @@ class DoctorProfilePage extends StatelessWidget {
},
backgroundColor: AppColors.primaryRedColor,
borderColor: AppColors.primaryRedColor,
textColor: AppColors.whiteColor,
textColor: Colors.white,
fontSize: 16,
fontWeight: FontWeight.w500,
borderRadius: 12,
padding: EdgeInsets.fromLTRB(10, 0, 10, 0),
height: 50.h,
icon: AppAssets.calendar,
iconColor: AppColors.whiteColor,
iconColor: Colors.white,
iconSize: 20.h,
).paddingSymmetrical(24.h, 24.h),
),

@ -110,7 +110,7 @@ class ImmediateLiveCarePaymentDetails extends StatelessWidget {
children: [
Row(
children: [
Utils.buildSvgWithAssets(icon: getLiveCareTypeIcon(immediateLiveCareVM.liveCareSelectedCallType), width: 32.h, height: 32.h, fit: BoxFit.contain),
Utils.buildSvgWithAssets(icon: getLiveCareTypeIcon(immediateLiveCareVM.liveCareSelectedCallType), width: 32.h, height: 32.h, fit: BoxFit.contain, applyThemeColor: false),
SizedBox(width: 8.h),
getLiveCareType(context, immediateLiveCareVM.liveCareSelectedCallType).toText16(isBold: true),
],

@ -292,6 +292,7 @@ class _ImmediateLiveCarePaymentPageState extends State<ImmediateLiveCarePaymentP
width: 200.h,
height: 80.h,
fit: BoxFit.contain,
applyThemeColor: false
).paddingSymmetrical(24.h, 0.h).onPress(() {
// payfortVM.setIsApplePayConfigurationLoading(true);
if (Utils.havePrivilege(103)) {

@ -61,7 +61,7 @@ class SelectLiveCareCallType extends StatelessWidget {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Utils.buildSvgWithAssets(icon: icon, width: 40.h, height: 40.h, fit: BoxFit.fill),
Utils.buildSvgWithAssets(icon: icon, width: 40.h, height: 40.h, fit: BoxFit.fill, applyThemeColor: false),
SizedBox(height: 16.h),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,

@ -225,7 +225,7 @@ class _ReviewAppointmentPageState extends State<ReviewAppointmentPage> {
},
backgroundColor: AppColors.primaryRedColor,
borderColor: AppColors.primaryRedColor,
textColor: AppColors.whiteColor,
textColor: Colors.white,
fontSize: 16,
fontWeight: FontWeight.w500,
borderRadius: 12,

@ -313,6 +313,7 @@ class _WaitingAppointmentPaymentPageState extends State<WaitingAppointmentPaymen
width: 200.h,
height: 80.h,
fit: BoxFit.contain,
applyThemeColor: false
).paddingSymmetrical(24.h, 0.h).onPress(() {
// payfortVM.setIsApplePayConfigurationLoading(true);
if (Utils.havePrivilege(103)) {

@ -262,7 +262,7 @@ class _AppointmentCalendarState extends State<AppointmentCalendar> {
},
backgroundColor: AppColors.primaryRedColor,
borderColor: AppColors.primaryRedColor,
textColor: AppColors.whiteColor,
textColor: Colors.white,
fontSize: 16.f,
fontWeight: FontWeight.w500,
borderRadius: 10.r,
@ -344,7 +344,7 @@ class TimeSlotChip extends StatelessWidget {
? Container(
padding: EdgeInsets.symmetric(horizontal: 14.h, vertical: 8.h),
decoration: ShapeDecoration(
color: isSelected ? AppColors.warningColorYellow : AppColors.whiteColor,
color: isSelected ? AppColors.warningColorYellow : AppColors.textColor,
shape: SmoothRectangleBorder(
borderRadius: BorderRadius.circular(8.h),
smoothness: 1,
@ -367,8 +367,8 @@ class TimeSlotChip extends StatelessWidget {
),
),
child: label.toText12(
color: isSelected ? AppColors.primaryRedColor : Colors.black87,
fontWeight: FontWeight.w500,
color: isSelected ? AppColors.primaryRedColor : AppColors.textColor,
fontWeight: FontWeight.w500,
),
),
);

@ -34,7 +34,7 @@ class ClinicCard extends StatelessWidget {
Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [
Utils.buildSvgWithAssets(icon: "assets/images/clinicIcons/${clinicsListResponseModel.clinicID ?? 1}.svg", width: 24.w, height: 24.h, fit: BoxFit.contain).toShimmer2(isShow: isLoading),
(clinicsListResponseModel.isLiveCareClinicAndOnline ?? true)
? Utils.buildSvgWithAssets(icon: AppAssets.livecare_clinic_icon, width: 32.w, height: 32.h, fit: BoxFit.contain).toShimmer2(isShow: isLoading)
? Utils.buildSvgWithAssets(icon: AppAssets.livecare_clinic_icon, width: 32.w, height: 32.h, fit: BoxFit.contain, applyThemeColor: false).toShimmer2(isShow: isLoading)
: SizedBox.shrink(),
],
),

@ -72,7 +72,7 @@ class DoctorCard extends StatelessWidget {
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.rating_icon, width: 15.w, height: 15.h),
Utils.buildSvgWithAssets(icon: AppAssets.rating_icon, width: 15.w, height: 15.h, applyThemeColor: false),
SizedBox(height: 2.h),
"${isLoading ? 4.78 : doctorsListResponseModel.decimalDoctorRate}".toText11(isBold: true, color: AppColors.textColor),
],

@ -69,13 +69,13 @@ class DoctorRatingDetails extends StatelessWidget {
Container(
width: 100.0,
margin: EdgeInsets.only(top: 10.0, left: 15.0, right: 15.0),
child: Text(LocaleKeys.excellent.tr(context: context), style: TextStyle(fontSize: 13.0, color: Colors.black, fontWeight: FontWeight.w600))),
child: Text(LocaleKeys.excellent.tr(context: context), style: TextStyle(fontSize: 13.0, color: AppColors.textColor, fontWeight: FontWeight.w600))),
getRatingLine(bookAppointmentsVM.doctorDetailsList[0].ratio, Colors.green[700]!),
],
),
Container(
margin: EdgeInsets.only(top: 10.0, left: 10.0, right: 10.0),
child: Text("${getRatingWidth(bookAppointmentsVM.doctorDetailsList[0].ratio).round()}%", style: TextStyle(fontSize: 14.0, color: Colors.black, fontWeight: FontWeight.w600)),
child: Text("${getRatingWidth(bookAppointmentsVM.doctorDetailsList[0].ratio).round()}%", style: TextStyle(fontSize: 14.0, color: AppColors.textColor, fontWeight: FontWeight.w600)),
),
],
),
@ -89,13 +89,13 @@ class DoctorRatingDetails extends StatelessWidget {
Container(
width: 100.0,
margin: EdgeInsets.only(top: 10.0, left: 15.0, right: 15.0),
child: Text(LocaleKeys.vGood.tr(context: context), style: TextStyle(fontSize: 13.0, color: Colors.black, fontWeight: FontWeight.w600))),
child: Text(LocaleKeys.vGood.tr(context: context), style: TextStyle(fontSize: 13.0, color: AppColors.textColor, fontWeight: FontWeight.w600))),
getRatingLine(bookAppointmentsVM.doctorDetailsList[1].ratio, Color(0xffB7B723)),
],
),
Container(
margin: EdgeInsets.only(top: 10.0, left: 10.0, right: 10.0),
child: Text("${bookAppointmentsVM.doctorDetailsList[1].ratio.round()}%", style: TextStyle(fontSize: 14.0, color: Colors.black, fontWeight: FontWeight.w600)),
child: Text("${bookAppointmentsVM.doctorDetailsList[1].ratio.round()}%", style: TextStyle(fontSize: 14.0, color: AppColors.textColor, fontWeight: FontWeight.w600)),
),
],
),
@ -109,13 +109,13 @@ class DoctorRatingDetails extends StatelessWidget {
Container(
width: 100.0,
margin: EdgeInsets.only(top: 10.0, left: 15.0, right: 15.0),
child: Text(LocaleKeys.good.tr(context: context), style: TextStyle(fontSize: 13.0, color: Colors.black, fontWeight: FontWeight.w600))),
child: Text(LocaleKeys.good.tr(context: context), style: TextStyle(fontSize: 13.0, color: AppColors.textColor, fontWeight: FontWeight.w600))),
getRatingLine(bookAppointmentsVM.doctorDetailsList[2].ratio, Color(0xffEBA727)),
],
),
Container(
margin: EdgeInsets.only(top: 10.0, left: 10.0, right: 10.0),
child: Text("${bookAppointmentsVM.doctorDetailsList[2].ratio.round()}%", style: TextStyle(fontSize: 14.0, color: Colors.black, fontWeight: FontWeight.w600)),
child: Text("${bookAppointmentsVM.doctorDetailsList[2].ratio.round()}%", style: TextStyle(fontSize: 14.0, color: AppColors.textColor, fontWeight: FontWeight.w600)),
),
],
),
@ -129,13 +129,13 @@ class DoctorRatingDetails extends StatelessWidget {
Container(
width: 100.0,
margin: EdgeInsets.only(top: 10.0, left: 15.0, right: 15.0),
child: Text(LocaleKeys.average.tr(context: context), style: TextStyle(fontSize: 13.0, color: Colors.black, fontWeight: FontWeight.w600))),
child: Text(LocaleKeys.average.tr(context: context), style: TextStyle(fontSize: 13.0, color: AppColors.textColor, fontWeight: FontWeight.w600))),
getRatingLine(bookAppointmentsVM.doctorDetailsList[3].ratio, Color(0xffEB7227)),
],
),
Container(
margin: EdgeInsets.only(top: 10.0, left: 10.0, right: 10.0),
child: Text("${bookAppointmentsVM.doctorDetailsList[3].ratio.round()}%", style: TextStyle(fontSize: 14.0, color: Colors.black, fontWeight: FontWeight.w600)),
child: Text("${bookAppointmentsVM.doctorDetailsList[3].ratio.round()}%", style: TextStyle(fontSize: 14.0, color: AppColors.textColor, fontWeight: FontWeight.w600)),
),
],
),
@ -150,13 +150,13 @@ class DoctorRatingDetails extends StatelessWidget {
Container(
width: 100.0,
margin: EdgeInsets.only(top: 10.0, left: 15.0, right: 15.0),
child: Text(LocaleKeys.average.tr(context: context), style: TextStyle(fontSize: 13.0, color: Colors.black, fontWeight: FontWeight.w600))),
child: Text(LocaleKeys.average.tr(context: context), style: TextStyle(fontSize: 13.0, color: AppColors.textColor, fontWeight: FontWeight.w600))),
getRatingLine(bookAppointmentsVM.doctorDetailsList[4].ratio, Color(0xffE20C0C)),
],
),
Container(
margin: EdgeInsets.only(top: 10.0, left: 10.0, right: 10.0),
child: Text("${bookAppointmentsVM.doctorDetailsList[4].ratio.round()}%", style: TextStyle(fontSize: 14.0, color: Colors.black, fontWeight: FontWeight.w600)),
child: Text("${bookAppointmentsVM.doctorDetailsList[4].ratio.round()}%", style: TextStyle(fontSize: 14.0, color: AppColors.textColor, fontWeight: FontWeight.w600)),
),
],
),

@ -122,12 +122,12 @@ class LiveChatPage extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
("${appState.isArabic() ? contactUsVM.liveChatProjectsList[index].projectNameN! : contactUsVM.liveChatProjectsList[index].projectName!}\n${contactUsVM.liveChatProjectsList[index].distanceInKilometers!} KM")
.toText14(isBold: true, color: contactUsVM.selectedLiveChatProjectIndex == index ? AppColors.whiteColor : AppColors.textColor),
.toText14(isBold: true, color: contactUsVM.selectedLiveChatProjectIndex == index ? Colors.white : AppColors.textColor),
Transform.flip(
flipX: getIt.get<AppState>().isArabic(),
child: Utils.buildSvgWithAssets(
icon: AppAssets.forward_arrow_icon_small,
iconColor: contactUsVM.selectedLiveChatProjectIndex == index ? AppColors.whiteColor : AppColors.textColor,
iconColor: contactUsVM.selectedLiveChatProjectIndex == index ? Colors.white : AppColors.textColor,
width: 18.h,
height: 13.h,
fit: BoxFit.contain,
@ -235,7 +235,7 @@ class LiveChatPage extends StatelessWidget {
},
backgroundColor: contactUsVM.selectedLiveChatProjectIndex == -1 ? AppColors.greyColor : AppColors.primaryRedColor,
borderColor: contactUsVM.selectedLiveChatProjectIndex == -1 ? AppColors.greyColor : AppColors.primaryRedColor,
textColor: AppColors.whiteColor,
textColor: Colors.white,
fontSize: 16,
fontWeight: FontWeight.w500,
borderRadius: 12,

@ -102,9 +102,9 @@ class FindUsItemCard extends StatelessWidget {
AppCustomChipWidget(
labelText: LocaleKeys.callNow.tr(),
icon: AppAssets.call_fill,
iconColor: AppColors.whiteColor,
iconColor: Colors.white,
backgroundColor: AppColors.primaryRedColor.withValues(alpha: 1.0),
textColor: AppColors.whiteColor,
textColor: Colors.white,
onChipTap: () {
launchUrl(Uri.parse("tel://" + "${getHMGLocationsModel.phoneNumber}"));
},

@ -133,6 +133,7 @@ class _CovidPaymentScreenState extends State<CovidPaymentScreen> {
width: 200.h,
height: 80.h,
fit: BoxFit.contain,
applyThemeColor: false
).paddingSymmetrical(24.h, 0.h).onPress(() {
if (Utils.havePrivilege(103)) {
startApplePay();

@ -171,7 +171,7 @@ class _NewReferralPageState extends State<NewReferralPage> {
);
},
bottomChild: Container(
color: Colors.white,
color: AppColors.whiteColor,
padding: EdgeInsets.all(ResponsiveExtension(20).h),
child: CustomButton(
text: _currentStep <= 1 ? LocaleKeys.next.tr() : LocaleKeys.submit.tr(),

@ -90,7 +90,8 @@ class OTPService {
},
backgroundColor: AppColors.primaryRedColor,
borderColor: AppColors.primaryRedBorderColor,
textColor: AppColors.whiteColor,
textColor: Colors.white,
iconColor: Colors.white,
icon: AppAssets.message,
),
),

@ -6,6 +6,7 @@ import 'package:hmg_patient_app_new/extensions/string_extensions.dart';
import 'package:hmg_patient_app_new/extensions/widget_extensions.dart';
import 'package:hmg_patient_app_new/generated/locale_keys.g.dart';
import 'package:hmg_patient_app_new/presentation/e_referral/e_referral_form_manager.dart';
import 'package:hmg_patient_app_new/theme/colors.dart';
import 'package:provider/provider.dart';
import 'package:hmg_patient_app_new/core/app_assets.dart';
import 'package:hmg_patient_app_new/features/hmg_services/hmg_services_view_model.dart';
@ -121,7 +122,7 @@ class RequesterFormStepState extends State<RequesterFormStep> {
errorMessage: formManager.errors.relationship,
hasError: !ValidationUtils.isNullOrEmpty(formManager.errors.relationship),
hasSelectionCustomIcon: false,
labelColor: Colors.black,
labelColor: AppColors.textColor,
padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 16),
leadingIcon: AppAssets.user_circle,
dropdownItems: [],
@ -171,8 +172,8 @@ class RequesterFormStepState extends State<RequesterFormStep> {
return DecoratedBox(
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(
color: Colors.white,
customBorder: BorderRadius.all(Radius.circular(24.h)) ,
color: AppColors.whiteColor,
customBorder: BorderRadius.all(Radius.circular(24.h)) ,
), child: ListView.builder(
shrinkWrap: true,

@ -28,7 +28,7 @@ class RrtRequestTypeSelect extends StatelessWidget {
),
DecoratedBox(
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(
color: Colors.white,
color: AppColors.whiteColor,
borderRadius: 20.r,
),
child: OptionSelection(context)),

@ -79,7 +79,7 @@ class CallAmbulancePage extends StatelessWidget {
),
Align(
alignment: AlignmentDirectional.topStart,
child: Utils.buildSvgWithAssets(icon: AppAssets.closeBottomNav, width: 32.h, height: 32.h).onPress(() {
child: Utils.buildSvgWithAssets(icon: AppAssets.closeBottomNav, width: 32.h, height: 32.h, applyThemeColor: false).onPress(() {
context.read<EmergencyServicesViewModel>().flushPickupInformation();
Navigator.pop(context);
}),

@ -52,6 +52,7 @@ class TypeSelectionWidget extends StatelessWidget {
child: AppCustomChipWidget(
icon: AppAssets.hmg,
iconHasColor: false,
applyThemeColor: false,
labelText: LocaleKeys.hmgHospitals.tr(context: context),
shape: RoundedRectangleBorder(
side: BorderSide(
@ -76,6 +77,7 @@ class TypeSelectionWidget extends StatelessWidget {
child: AppCustomChipWidget(
icon: AppAssets.hmc,
iconHasColor: false,
applyThemeColor: false,
labelText: LocaleKeys.hmcMedicalClinic.tr(context: context),
shape: RoundedRectangleBorder(
side: BorderSide(

@ -53,7 +53,7 @@ class EmergencyServicesPage extends StatelessWidget {
),
child: Row(
children: [
Utils.buildSvgWithAssets(icon: AppAssets.call_ambulance_icon, width: 40.h, height: 40.h),
Utils.buildSvgWithAssets(icon: AppAssets.call_ambulance_icon, width: 40.h, height: 40.h, applyThemeColor: false),
SizedBox(width: 12.h),
Expanded(
child: Column(
@ -87,7 +87,7 @@ class EmergencyServicesPage extends StatelessWidget {
"".toText14(),
Utils.buildSvgWithAssets(
icon: AppAssets.cancel_circle_icon,
iconColor: AppColors.whiteColor,
iconColor: Colors.white,
width: 24.h,
height: 24.h,
fit: BoxFit.contain,
@ -99,10 +99,10 @@ class EmergencyServicesPage extends StatelessWidget {
Lottie.asset(AppAnimations.ambulanceAlert,
repeat: false, reverse: false, frameRate: FrameRate(60), width: 120.h, height: 120.h, fit: BoxFit.contain),
SizedBox(height: 8.h),
LocaleKeys.confirmation.tr().toText28(color: AppColors.whiteColor, isBold: true),
LocaleKeys.confirmation.tr().toText28(color: Colors.white, isBold: true),
SizedBox(height: 8.h),
LocaleKeys.areYouSureYouWantToCallAmbulance.tr()
.toText14(color: AppColors.whiteColor, weight: FontWeight.w500),
.toText14(color: Colors.white, weight: FontWeight.w500),
SizedBox(height: 24.h),
CustomButton(
text: LocaleKeys.confirm.tr(context: context),
@ -111,8 +111,8 @@ class EmergencyServicesPage extends StatelessWidget {
await emergencyServicesViewModel.getTransportationOption();
openTranportationSelectionBottomSheet(context);
},
backgroundColor: AppColors.whiteColor,
borderColor: AppColors.whiteColor,
backgroundColor: Colors.white,
borderColor: Colors.white,
textColor: AppColors.primaryRedColor,
icon: AppAssets.checkmark_icon,
iconColor: AppColors.primaryRedColor,
@ -140,7 +140,7 @@ class EmergencyServicesPage extends StatelessWidget {
),
child: Row(
children: [
Utils.buildSvgWithAssets(icon: AppAssets.nearest_er_icon, width: 40.h, height: 40.h),
Utils.buildSvgWithAssets(icon: AppAssets.nearest_er_icon, width: 40.h, height: 40.h, applyThemeColor: false),
SizedBox(width: 12.h),
Expanded(
child: Column(
@ -169,7 +169,7 @@ class EmergencyServicesPage extends StatelessWidget {
),
child: Row(
children: [
Utils.buildSvgWithAssets(icon: AppAssets.rrt_icon, width: 40.h, height: 40.h),
Utils.buildSvgWithAssets(icon: AppAssets.rrt_icon, width: 40.h, height: 40.h, applyThemeColor: false),
SizedBox(width: 12.h),
Expanded(
child: Column(
@ -199,10 +199,10 @@ class EmergencyServicesPage extends StatelessWidget {
children: [
Lottie.asset(AppAnimations.ambulanceAlert, repeat: false, reverse: false, frameRate: FrameRate(60), width: 120.h, height: 120.h, fit: BoxFit.contain),
SizedBox(height: 8.h),
LocaleKeys.confirm.tr().toText28(color: AppColors.whiteColor, isBold: true),
LocaleKeys.confirm.tr().toText28(color: Colors.white, isBold: true),
SizedBox(height: 8.h),
LocaleKeys.areYouSureYouWantToCallRRT.tr()
.toText14(color: AppColors.whiteColor, weight: FontWeight.w500),
.toText14(color: Colors.white, weight: FontWeight.w500),
SizedBox(height: 24.h),
CustomButton(
text: LocaleKeys.confirm.tr(context: context),
@ -237,8 +237,8 @@ class EmergencyServicesPage extends StatelessWidget {
);
});
},
backgroundColor: AppColors.whiteColor,
borderColor: AppColors.whiteColor,
backgroundColor: Colors.white,
borderColor: Colors.white,
textColor: AppColors.primaryRedColor,
icon: AppAssets.checkmark_icon,
iconColor: AppColors.primaryRedColor,
@ -268,7 +268,7 @@ class EmergencyServicesPage extends StatelessWidget {
),
child: Row(
children: [
Utils.buildSvgWithAssets(icon: AppAssets.rrt_icon, width: 40.h, height: 40.h),
Utils.buildSvgWithAssets(icon: AppAssets.rrt_icon, width: 40.h, height: 40.h, applyThemeColor: false),
SizedBox(width: 12.h),
Expanded(
child: Column(
@ -311,9 +311,9 @@ class EmergencyServicesPage extends StatelessWidget {
Lottie.asset(AppAnimations.ambulanceAlert,
repeat: false, reverse: false, frameRate: FrameRate(60), width: 120.h, height: 120.h, fit: BoxFit.contain),
SizedBox(height: 8.h),
LocaleKeys.confirm.tr().toText28(color: AppColors.whiteColor, isBold: true),
LocaleKeys.confirm.tr().toText28(color: Colors.white, isBold: true),
SizedBox(height: 8.h),
LocaleKeys.areYouSureYouWantToMakeERCheckIn.tr().toText14(color: AppColors.whiteColor, weight: FontWeight.w500),
LocaleKeys.areYouSureYouWantToMakeERCheckIn.tr().toText14(color: Colors.white, weight: FontWeight.w500),
SizedBox(height: 24.h),
CustomButton(
text: LocaleKeys.confirm.tr(context: context),
@ -325,8 +325,8 @@ class EmergencyServicesPage extends StatelessWidget {
context.read<EmergencyServicesViewModel>().navigateToEROnlineCheckIn();
});
},
backgroundColor: AppColors.whiteColor,
borderColor: AppColors.whiteColor,
backgroundColor: Colors.white,
borderColor: Colors.white,
textColor: AppColors.primaryRedColor,
icon: AppAssets.checkmark_icon,
iconColor: AppColors.primaryRedColor,

@ -288,6 +288,7 @@ class _ErOnlineCheckinPaymentPageState extends State<ErOnlineCheckinPaymentPage>
width: 200.h,
height: 80.h,
fit: BoxFit.contain,
applyThemeColor: false
).paddingSymmetrical(24.h, 0.h).onPress(() {
if (Utils.havePrivilege(103)) {
startApplePay();

@ -26,7 +26,7 @@ class AmbulanceHistoryItem extends StatelessWidget {
Widget build(BuildContext context) {
return DecoratedBox(
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(
color: Colors.white,
color: AppColors.whiteColor,
hasShadow: true,
customBorder: BorderRadius.all(
Radius.circular(20.h),

@ -26,7 +26,7 @@ class RRTItem extends StatelessWidget {
Widget build(BuildContext context) {
return DecoratedBox(
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(
color: Colors.white,
color: AppColors.whiteColor,
hasShadow: true,
customBorder: BorderRadius.all(
Radius.circular(20.h),

@ -27,7 +27,7 @@ class NearestERItem extends StatelessWidget {
Widget build(BuildContext context) {
return Container(
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(
color: Colors.white,
color: AppColors.whiteColor,
customBorder: BorderRadius.only(
topLeft: Radius.circular(24.h),
topRight: Radius.circular(24.h),

@ -133,7 +133,7 @@ class _RechargeWalletPageState extends State<RechargeWalletPage> {
children: [
Row(
children: [
Utils.buildSvgWithAssets(icon: AppAssets.my_account_icon, width: 40.h, height: 40.h),
Utils.buildSvgWithAssets(icon: AppAssets.my_account_icon, width: 40.h, height: 40.h, applyThemeColor: false),
SizedBox(width: 8.h),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
@ -171,7 +171,7 @@ class _RechargeWalletPageState extends State<RechargeWalletPage> {
children: [
Row(
children: [
Utils.buildSvgWithAssets(icon: AppAssets.select_hospital_icon, width: 40.h, height: 40.h),
Utils.buildSvgWithAssets(icon: AppAssets.select_hospital_icon, width: 40.h, height: 40.h, applyThemeColor: false),
SizedBox(width: 8.h),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
@ -197,7 +197,7 @@ class _RechargeWalletPageState extends State<RechargeWalletPage> {
SizedBox(height: 16.h),
Row(
children: [
Utils.buildSvgWithAssets(icon: AppAssets.email_icon, width: 40.h, height: 40.h),
Utils.buildSvgWithAssets(icon: AppAssets.email_icon, width: 40.h, height: 40.h, applyThemeColor: false),
SizedBox(width: 8.h),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
@ -281,14 +281,14 @@ class _RechargeWalletPageState extends State<RechargeWalletPage> {
},
backgroundColor: AppColors.primaryRedColor,
borderColor: AppColors.primaryRedColor,
textColor: AppColors.whiteColor,
textColor: Colors.white,
fontSize: 16,
fontWeight: FontWeight.w500,
borderRadius: 12,
padding: EdgeInsets.fromLTRB(10, 0, 10, 0),
height: 50.h,
icon: AppAssets.appointment_pay_icon,
iconColor: AppColors.whiteColor,
iconColor: Colors.white,
iconSize: 18.h,
).paddingSymmetrical(24.h, 24.h),
),

@ -188,10 +188,7 @@ class _WalletPaymentConfirmPageState extends State<WalletPaymentConfirmPage> {
Platform.isIOS
? Utils.buildSvgWithAssets(
icon: AppAssets.apple_pay_button,
width: 200.h,
height: 56.h,
fit: BoxFit.contain,
).paddingSymmetrical(24.h, 0.h).onPress(() {
width: 200.h, height: 56.h, fit: BoxFit.contain, applyThemeColor: false).paddingSymmetrical(24.h, 0.h).onPress(() {
if (Utils.havePrivilege(103)) {
startApplePay();
} else {

@ -54,6 +54,7 @@ class HospitalListItemAdvancePayment extends StatelessWidget {
children: [
Utils.buildSvgWithAssets(
icon: (hospitalModel.isHMC == true) ? AppAssets.hmc : AppAssets.hmg,
applyThemeColor: false
).paddingOnly(right: 10),
Expanded(
child: Text(

@ -39,10 +39,10 @@ class _HealthCalculatorsPageState extends State<HealthCalculatorsPage> {
? Column(
children: [
Container(
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: Colors.white, borderRadius: 20.r),
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.r),
child: Row(
children: [
Utils.buildSvgWithAssets(icon: AppAssets.general_health, height: 40.h, width: 40.w, fit: BoxFit.none),
Utils.buildSvgWithAssets(icon: AppAssets.general_health, height: 40.h, width: 40.w, fit: BoxFit.none, applyThemeColor: false),
SizedBox(width: 12.w),
Flexible(
child: Column(
@ -70,10 +70,10 @@ class _HealthCalculatorsPageState extends State<HealthCalculatorsPage> {
}),
SizedBox(height: 16.h),
Container(
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: Colors.white, borderRadius: 20.r),
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.r),
child: Row(
children: [
Utils.buildSvgWithAssets(icon: AppAssets.women_health, height: 40.h, width: 40.w, fit: BoxFit.none),
Utils.buildSvgWithAssets(icon: AppAssets.women_health, height: 40.h, width: 40.w, fit: BoxFit.none, applyThemeColor: false),
SizedBox(width: 12.w),
Flexible(
child: Column(
@ -102,11 +102,11 @@ class _HealthCalculatorsPageState extends State<HealthCalculatorsPage> {
: Column(
children: [
Container(
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: Colors.white, borderRadius: 20.r),
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.r),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.bloodSugar, height: 40.h, width: 40.w, fit: BoxFit.none),
Utils.buildSvgWithAssets(icon: AppAssets.bloodSugar, height: 40.h, width: 40.w, fit: BoxFit.none, applyThemeColor: false),
SizedBox(width: 12.w),
Flexible(
child: Column(
@ -136,11 +136,11 @@ class _HealthCalculatorsPageState extends State<HealthCalculatorsPage> {
}),
SizedBox(height: 16.h),
Container(
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: Colors.white, borderRadius: 20.r),
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.r),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.bloodCholestrol, height: 40.h, width: 40.w, fit: BoxFit.none),
Utils.buildSvgWithAssets(icon: AppAssets.bloodCholestrol, height: 40.h, width: 40.w, fit: BoxFit.none, applyThemeColor: false),
SizedBox(width: 12.w),
Flexible(
child: Column(
@ -166,11 +166,11 @@ class _HealthCalculatorsPageState extends State<HealthCalculatorsPage> {
}),
SizedBox(height: 16.h),
Container(
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: Colors.white, borderRadius: 20.r),
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.r),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.triglycerides, height: 40.h, width: 40.w, fit: BoxFit.none),
Utils.buildSvgWithAssets(icon: AppAssets.triglycerides, height: 40.h, width: 40.w, fit: BoxFit.none, applyThemeColor: false),
SizedBox(width: 12.w),
Flexible(
child: Column(

@ -85,7 +85,7 @@ class _BodyFatWidgetState extends State<BodyFatWidget> {
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.gender, width: 40.w, height: 40.w),
Utils.buildSvgWithAssets(icon: AppAssets.gender, width: 40.w, height: 40.w, applyThemeColor: false),
SizedBox(width: 12.w),
Expanded(
child: Row(
@ -111,7 +111,7 @@ class _BodyFatWidgetState extends State<BodyFatWidget> {
message: "",
child: Container(
padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h),
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(20.r)),
decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)),
child: ListView.separated(
shrinkWrap: true,
itemCount: _genders.length,
@ -165,7 +165,7 @@ class _BodyFatWidgetState extends State<BodyFatWidget> {
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.height, width: 40.w, height: 40.w),
Utils.buildSvgWithAssets(icon: AppAssets.height, width: 40.w, height: 40.w, applyThemeColor: false),
SizedBox(width: 12.w),
Expanded(
flex: 3,
@ -221,7 +221,7 @@ class _BodyFatWidgetState extends State<BodyFatWidget> {
message: "",
child: Container(
padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h),
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(20.r)),
decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)),
child: ListView.separated(
shrinkWrap: true,
itemCount: _heightUnits.length,
@ -277,7 +277,7 @@ class _BodyFatWidgetState extends State<BodyFatWidget> {
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.weight, width: 40.w, height: 40.w),
Utils.buildSvgWithAssets(icon: AppAssets.weight, width: 40.w, height: 40.w, applyThemeColor: false),
SizedBox(width: 12.w),
Expanded(
flex: 3,
@ -338,7 +338,7 @@ class _BodyFatWidgetState extends State<BodyFatWidget> {
message: "",
child: Container(
padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h),
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(20.r)),
decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)),
child: ListView.separated(
shrinkWrap: true,
itemCount: _heightUnits.length,
@ -394,7 +394,7 @@ class _BodyFatWidgetState extends State<BodyFatWidget> {
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.weight, width: 40.w, height: 40.w),
Utils.buildSvgWithAssets(icon: AppAssets.weight, width: 40.w, height: 40.w, applyThemeColor: false),
SizedBox(width: 12.w),
Expanded(
flex: 3,
@ -455,7 +455,7 @@ class _BodyFatWidgetState extends State<BodyFatWidget> {
message: "",
child: Container(
padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h),
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(20.r)),
decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)),
child: ListView.separated(
shrinkWrap: true,
itemCount: _heightUnits.length,
@ -511,7 +511,7 @@ class _BodyFatWidgetState extends State<BodyFatWidget> {
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.weight, width: 40.w, height: 40.w),
Utils.buildSvgWithAssets(icon: AppAssets.weight, width: 40.w, height: 40.w, applyThemeColor: false),
SizedBox(width: 12.w),
Expanded(
flex: 3,
@ -572,7 +572,7 @@ class _BodyFatWidgetState extends State<BodyFatWidget> {
message: "",
child: Container(
padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h),
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(20.r)),
decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)),
child: ListView.separated(
shrinkWrap: true,
itemCount: _heightUnits.length,

@ -67,7 +67,7 @@ class _BMIWidgetState extends State<BMIWidget> {
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.height, width: 40.w, height: 40.w),
Utils.buildSvgWithAssets(icon: AppAssets.height, width: 40.w, height: 40.w, applyThemeColor: false),
SizedBox(width: 12.w),
Expanded(
flex: 3,
@ -123,7 +123,7 @@ class _BMIWidgetState extends State<BMIWidget> {
message: "",
child: Container(
padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h),
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(20.r)),
decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)),
child: ListView.separated(
shrinkWrap: true,
itemCount: _heightUnits.length,
@ -179,7 +179,7 @@ class _BMIWidgetState extends State<BMIWidget> {
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.weight, width: 40.w, height: 40.w),
Utils.buildSvgWithAssets(icon: AppAssets.weight, width: 40.w, height: 40.w, applyThemeColor: false),
SizedBox(width: 12.w),
Expanded(
flex: 3,
@ -240,7 +240,7 @@ class _BMIWidgetState extends State<BMIWidget> {
message: "",
child: Container(
padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h),
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(20.r)),
decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)),
child: ListView.separated(
shrinkWrap: true,
itemCount: _weightUnits.length,

@ -80,7 +80,7 @@ class _BMRWidgetState extends State<BMRWidget> {
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.gender, width: 40.w, height: 40.w),
Utils.buildSvgWithAssets(icon: AppAssets.gender, width: 40.w, height: 40.w, applyThemeColor: false),
SizedBox(width: 12.w),
Expanded(
child: Row(
@ -107,7 +107,7 @@ class _BMRWidgetState extends State<BMRWidget> {
message: "",
child: Container(
padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h),
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(20.r)),
decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)),
child: ListView.separated(
shrinkWrap: true,
itemCount: _genders.length,
@ -162,7 +162,7 @@ class _BMRWidgetState extends State<BMRWidget> {
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.age, width: 40.w, height: 40.w),
Utils.buildSvgWithAssets(icon: AppAssets.age, width: 40.w, height: 40.w, applyThemeColor: false),
SizedBox(width: 12.w),
Expanded(
flex: 3,
@ -199,7 +199,7 @@ class _BMRWidgetState extends State<BMRWidget> {
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.height, width: 40.w, height: 40.w),
Utils.buildSvgWithAssets(icon: AppAssets.height, width: 40.w, height: 40.w, applyThemeColor: false),
SizedBox(width: 12.w),
Expanded(
flex: 3,
@ -255,7 +255,7 @@ class _BMRWidgetState extends State<BMRWidget> {
message: "",
child: Container(
padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h),
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(20.r)),
decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)),
child: ListView.separated(
shrinkWrap: true,
itemCount: _heightUnits.length,
@ -312,7 +312,7 @@ class _BMRWidgetState extends State<BMRWidget> {
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.weight, width: 40.w, height: 40.w),
Utils.buildSvgWithAssets(icon: AppAssets.weight, width: 40.w, height: 40.w, applyThemeColor: false),
SizedBox(width: 12.w),
Expanded(
flex: 3,
@ -373,7 +373,7 @@ class _BMRWidgetState extends State<BMRWidget> {
message: "",
child: Container(
padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h),
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(20.r)),
decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)),
child: ListView.separated(
shrinkWrap: true,
itemCount: _weightUnits.length,
@ -430,7 +430,7 @@ class _BMRWidgetState extends State<BMRWidget> {
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.activity, width: 40.w, height: 40.w),
Utils.buildSvgWithAssets(icon: AppAssets.activity, width: 40.w, height: 40.w, applyThemeColor: false),
SizedBox(width: 12.w),
Expanded(
child: Row(
@ -456,7 +456,7 @@ class _BMRWidgetState extends State<BMRWidget> {
message: "",
child: Container(
padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h),
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(20.r)),
decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)),
child: ListView.separated(
shrinkWrap: true,
itemCount: _activity.length,

@ -81,7 +81,7 @@ class _CaloriesWidgetState extends State<CaloriesWidget> {
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.gender, width: 40.w, height: 40.w),
Utils.buildSvgWithAssets(icon: AppAssets.gender, width: 40.w, height: 40.w, applyThemeColor: false),
SizedBox(width: 12.w),
Expanded(
child: Row(
@ -108,7 +108,7 @@ class _CaloriesWidgetState extends State<CaloriesWidget> {
message: "",
child: Container(
padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h),
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(20.r)),
decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)),
child: ListView.separated(
shrinkWrap: true,
itemCount: _genders.length,
@ -162,7 +162,7 @@ class _CaloriesWidgetState extends State<CaloriesWidget> {
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.age, width: 40.w, height: 40.w),
Utils.buildSvgWithAssets(icon: AppAssets.age, width: 40.w, height: 40.w, applyThemeColor: false),
SizedBox(width: 12.w),
Expanded(
flex: 3,
@ -199,7 +199,7 @@ class _CaloriesWidgetState extends State<CaloriesWidget> {
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.height, width: 40.w, height: 40.w),
Utils.buildSvgWithAssets(icon: AppAssets.height, width: 40.w, height: 40.w, applyThemeColor: false),
SizedBox(width: 12.w),
Expanded(
flex: 3,
@ -255,7 +255,7 @@ class _CaloriesWidgetState extends State<CaloriesWidget> {
message: "",
child: Container(
padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h),
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(20.r)),
decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)),
child: ListView.separated(
shrinkWrap: true,
itemCount: _heightUnits.length,
@ -311,7 +311,7 @@ class _CaloriesWidgetState extends State<CaloriesWidget> {
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.weight, width: 40.w, height: 40.w),
Utils.buildSvgWithAssets(icon: AppAssets.weight, width: 40.w, height: 40.w, applyThemeColor: false),
SizedBox(width: 12.w),
Expanded(
flex: 3,
@ -372,7 +372,7 @@ class _CaloriesWidgetState extends State<CaloriesWidget> {
message: "",
child: Container(
padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h),
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(20.r)),
decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)),
child: ListView.separated(
shrinkWrap: true,
itemCount: _weightUnits.length,
@ -429,7 +429,7 @@ class _CaloriesWidgetState extends State<CaloriesWidget> {
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.activity, width: 40.w, height: 40.w),
Utils.buildSvgWithAssets(icon: AppAssets.activity, width: 40.w, height: 40.w, applyThemeColor: false),
SizedBox(width: 12.w),
Expanded(
child: Row(
@ -455,7 +455,7 @@ class _CaloriesWidgetState extends State<CaloriesWidget> {
message: "",
child: Container(
padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h),
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(20.r)),
decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)),
child: ListView.separated(
shrinkWrap: true,
itemCount: _activity.length,

@ -62,7 +62,7 @@ class _CrabsWidgetState extends State<CrabsWidget> {
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.age, width: 40.w, height: 40.w),
Utils.buildSvgWithAssets(icon: AppAssets.age, width: 40.w, height: 40.w, applyThemeColor: false),
SizedBox(width: 12.w),
Expanded(
flex: 3,
@ -93,7 +93,7 @@ class _CrabsWidgetState extends State<CrabsWidget> {
],
),
),
Utils.buildSvgWithAssets(icon: AppAssets.ask_doctor_icon).onPress(() {
Utils.buildSvgWithAssets(icon: AppAssets.ask_doctor_icon, applyThemeColor: false).onPress(() {
Navigator.pop(context);
Navigator.of(context).push(CustomPageRoute(page: HealthCalculatorDetailedPage(calculatorType: HealthCalculatorsTypeEnum.calories)));
}),
@ -104,7 +104,7 @@ class _CrabsWidgetState extends State<CrabsWidget> {
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.activity, width: 40.w, height: 40.w),
Utils.buildSvgWithAssets(icon: AppAssets.activity, width: 40.w, height: 40.w, applyThemeColor: false),
SizedBox(width: 12.w),
Expanded(
child: Row(
@ -130,7 +130,7 @@ class _CrabsWidgetState extends State<CrabsWidget> {
message: "",
child: Container(
padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h),
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(20.r)),
decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)),
child: ListView.separated(
shrinkWrap: true,
itemCount: _activity.length,

@ -73,7 +73,7 @@ class _IdealBodyWeightWidgetState extends State<IdealBodyWeightWidget> {
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.height, width: 40.w, height: 40.w),
Utils.buildSvgWithAssets(icon: AppAssets.height, width: 40.w, height: 40.w, applyThemeColor: false),
SizedBox(width: 12.w),
Expanded(
flex: 3,
@ -129,7 +129,7 @@ class _IdealBodyWeightWidgetState extends State<IdealBodyWeightWidget> {
message: "",
child: Container(
padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h),
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(20.r)),
decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)),
child: ListView.separated(
shrinkWrap: true,
itemCount: _heightUnits.length,
@ -185,7 +185,7 @@ class _IdealBodyWeightWidgetState extends State<IdealBodyWeightWidget> {
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.weight, width: 40.w, height: 40.w),
Utils.buildSvgWithAssets(icon: AppAssets.weight, width: 40.w, height: 40.w, applyThemeColor: false),
SizedBox(width: 12.w),
Expanded(
flex: 3,
@ -246,7 +246,7 @@ class _IdealBodyWeightWidgetState extends State<IdealBodyWeightWidget> {
message: "",
child: Container(
padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h),
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(20.r)),
decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)),
child: ListView.separated(
shrinkWrap: true,
itemCount: _weightUnits.length,
@ -301,7 +301,7 @@ class _IdealBodyWeightWidgetState extends State<IdealBodyWeightWidget> {
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.activity, width: 40.w, height: 40.w),
Utils.buildSvgWithAssets(icon: AppAssets.activity, width: 40.w, height: 40.w, applyThemeColor: false),
SizedBox(width: 12.w),
Expanded(
child: Row(
@ -327,7 +327,7 @@ class _IdealBodyWeightWidgetState extends State<IdealBodyWeightWidget> {
message: "",
child: Container(
padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h),
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(20.r)),
decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)),
child: ListView.separated(
shrinkWrap: true,
itemCount: _activity.length,

@ -89,7 +89,7 @@ class _OvulationWidgetState extends State<OvulationWidget> {
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.age, width: 40.w, height: 40.w),
Utils.buildSvgWithAssets(icon: AppAssets.age, width: 40.w, height: 40.w, applyThemeColor: false),
SizedBox(width: 12.w),
Expanded(
flex: 3,
@ -126,7 +126,7 @@ class _OvulationWidgetState extends State<OvulationWidget> {
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.age, width: 40.w, height: 40.w),
Utils.buildSvgWithAssets(icon: AppAssets.age, width: 40.w, height: 40.w, applyThemeColor: false),
SizedBox(width: 12.w),
Expanded(
flex: 3,

@ -211,7 +211,7 @@ class _AddHealthTrackerEntryPageState extends State<AddHealthTrackerEntryPage> {
child: Container(
constraints: BoxConstraints(maxHeight: MediaQuery.of(context).size.height * 0.7),
padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h),
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(20.r)),
decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)),
child: ListView.separated(
shrinkWrap: true,
itemCount: items.length,

@ -26,7 +26,7 @@ Widget buildHealthTrackerCard({
required VoidCallback onTap,
}) {
return Container(
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: Colors.white, borderRadius: 20.r),
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.r),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [

@ -389,7 +389,7 @@ class ServicesPage extends StatelessWidget {
spacing: 8.w,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.wallet, width: 40.w, height: 40.h),
Utils.buildSvgWithAssets(icon: AppAssets.wallet, width: 40.w, height: 40.h, applyThemeColor: false),
LocaleKeys.habibWallet.tr().toText14(weight: FontWeight.w600, maxlines: 2).expanded,
Utils.buildSvgWithAssets(icon: getIt.get<AppState>().isArabic() ? AppAssets.arrow_back : AppAssets.arrow_forward),
],
@ -449,7 +449,7 @@ class ServicesPage extends StatelessWidget {
spacing: 8.w,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.services_medical_file_icon, width: 40.w, height: 40.h),
Utils.buildSvgWithAssets(icon: AppAssets.services_medical_file_icon, width: 40.w, height: 40.h, applyThemeColor: false),
LocaleKeys.medicalFile.tr().toText16(weight: FontWeight.w600, maxlines: 2).expanded,
Utils.buildSvgWithAssets(icon: getIt.get<AppState>().isArabic() ? AppAssets.arrow_back : AppAssets.arrow_forward),
],

@ -48,6 +48,7 @@ class ServiceGridViewItem extends StatelessWidget {
icon: hmgServiceComponentModel.icon,
iconColor: isHealthToolIcon ? null : AppColors.whiteColor,
fit: BoxFit.contain,
applyThemeColor: false
),
),
),

@ -1,11 +1,12 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:hmg_patient_app_new/core/app_assets.dart';
import 'package:hmg_patient_app_new/generated/locale_keys.g.dart';
import 'package:hmg_patient_app_new/presentation/home/data/service_card_data.dart';
import 'package:hmg_patient_app_new/theme/colors.dart';
class LandingPageData {
static List<ServiceCardData> getNotLoggedInServiceCardsList = [
static List<ServiceCardData> get getNotLoggedInServiceCardsList => [
ServiceCardData(
serviceName: "emergency",
icon: AppAssets.emergency_services_icon,
@ -68,15 +69,15 @@ class LandingPageData {
),
];
static List<ServiceCardData> getLoggedInServiceCardsList = [
static List<ServiceCardData> get getLoggedInServiceCardsList => [
ServiceCardData(
serviceName: "emergency",
icon: AppAssets.emergency_services_icon,
title: LocaleKeys.emergency,
subtitle: LocaleKeys.services2,
backgroundColor: AppColors.primaryRedColor,
iconColor: AppColors.whiteColor,
textColor: AppColors.whiteColor,
iconColor: Colors.white,
textColor: Colors.white,
isBold: true,
),
ServiceCardData(
@ -141,7 +142,7 @@ class LandingPageData {
),
];
static List<ServiceCardData> getServiceCardsList = [
static List<ServiceCardData> get getServiceCardsList => [
ServiceCardData(
serviceName: "livecare",
icon: AppAssets.small_livecare_icon,

@ -8,8 +8,8 @@ class ServiceCardData {
final String title;
final String subtitle;
final Color? iconColor;
final Color textColor;
final Color backgroundColor;
final Color? textColor;
final Color? backgroundColor;
final bool isBold;
final String largeCardIcon;
@ -19,9 +19,9 @@ class ServiceCardData {
this.title = "",
this.subtitle = "",
this.largeCardIcon = "",
this.backgroundColor = AppColors.whiteColor,
this.iconColor = AppColors.blackColor,
this.textColor = AppColors.blackColor,
this.backgroundColor,
this.iconColor,
this.textColor,
this.isBold = false
});
}

@ -45,7 +45,7 @@ class HabibWalletCard extends StatelessWidget {
child: Stack(children: [
Positioned(
right: 0,
child: ClipRRect(borderRadius: BorderRadius.circular(24.0), child: Utils.buildSvgWithAssets(icon: AppAssets.habib_background_icon, width: 150.h, height: 150.h)),
child: ClipRRect(borderRadius: BorderRadius.circular(24.0), child: Utils.buildSvgWithAssets(icon: AppAssets.habib_background_icon, width: 150.h, height: 150.h, applyThemeColor: false)),
),
Padding(
padding: EdgeInsets.all(16.h),
@ -123,7 +123,7 @@ class HabibWalletCard extends StatelessWidget {
icon: AppAssets.recharge_icon,
iconSize: 24.h,
backgroundColor: AppColors.infoColor,
textColor: AppColors.whiteColor,
textColor: Colors.white,
text: LocaleKeys.recharge.tr(context: context),
borderWidth: 0.w,
fontWeight: FontWeight.w500,

@ -72,7 +72,7 @@ class LargeServiceCard extends StatelessWidget {
height: 48.h,
width: 48.h,
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(
color: serviceCardData.backgroundColor,
color: serviceCardData.backgroundColor!,
borderRadius: 12.r,
hasShadow: false,
),
@ -209,7 +209,7 @@ class FadedLargeServiceCard extends StatelessWidget {
height: 32.h,
width: 32.h,
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(
color: serviceCardData.backgroundColor,
color: serviceCardData.backgroundColor!,
borderRadius: 30.r,
hasShadow: false,
),
@ -219,6 +219,7 @@ class FadedLargeServiceCard extends StatelessWidget {
icon: serviceCardData.icon,
iconColor: serviceCardData.iconColor,
fit: BoxFit.contain,
applyThemeColor: false
),
),
),

@ -32,9 +32,9 @@ class SmallServiceCard extends StatelessWidget {
final String icon;
final String title;
final String subtitle;
final Color iconColor;
final Color textColor;
final Color backgroundColor;
final Color? iconColor;
final Color? textColor;
final Color? backgroundColor;
final bool isBold;
SmallServiceCard({
@ -43,33 +43,36 @@ class SmallServiceCard extends StatelessWidget {
this.serviceName = "",
this.title = "",
this.subtitle = "",
this.backgroundColor = AppColors.whiteColor,
this.iconColor = AppColors.blackColor,
this.textColor = AppColors.blackColor,
this.backgroundColor,
this.iconColor,
this.textColor,
this.isBold = false,
});
@override
Widget build(BuildContext context) {
final resolvedBgColor = backgroundColor ?? AppColors.whiteColor;
final resolvedIconColor = iconColor ?? AppColors.blackColor;
final resolvedTextColor = textColor ?? AppColors.blackColor;
return Container(
height: 92.h,
width: 92.h,
padding: EdgeInsets.all(4.0),
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(
color: backgroundColor,
color: resolvedBgColor,
borderRadius: 16,
),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: icon, iconColor: iconColor, width: 32.h, height: 32.h),
Utils.buildSvgWithAssets(icon: icon, iconColor: resolvedIconColor, width: 32.h, height: 32.h),
SizedBox(height: 6.h),
if (isFoldable || isTablet) ...[
title.tr(context: context).toText10(color: textColor, weight: FontWeight.w500, isCenter: true, letterSpacing: -0.2, maxlines: 1),
subtitle.tr(context: context).toText10(color: textColor, weight: FontWeight.w500, isCenter: true, letterSpacing: -0.2, maxlines: 1),
title.tr(context: context).toText10(color: resolvedTextColor, weight: FontWeight.w500, isCenter: true, letterSpacing: -0.2, maxlines: 1),
subtitle.tr(context: context).toText10(color: resolvedTextColor, weight: FontWeight.w500, isCenter: true, letterSpacing: -0.2, maxlines: 1),
] else ...[
title.tr(context: context).toText12(color: textColor, fontWeight: FontWeight.w500, isCenter: true, letterSpacing: -0.2, maxLine: 1),
subtitle.tr(context: context).toText12(color: textColor, fontWeight: FontWeight.w500, isCenter: true, letterSpacing: -0.2, maxLine: 1),
title.tr(context: context).toText12(color: resolvedTextColor, fontWeight: FontWeight.w500, isCenter: true, letterSpacing: -0.2, maxLine: 1),
subtitle.tr(context: context).toText12(color: resolvedTextColor, fontWeight: FontWeight.w500, isCenter: true, letterSpacing: -0.2, maxLine: 1),
]
],
),

@ -434,7 +434,7 @@ class _HhcProceduresPageState extends State<HhcProceduresPage> {
child: Container(
height: 80.h,
decoration: BoxDecoration(
color: Colors.white,
color: AppColors.whiteColor,
borderRadius: BorderRadius.circular(10.r),
),
),

@ -146,14 +146,14 @@ class LabResultByClinic extends StatelessWidget {
},
backgroundColor: AppColors.successColor,
borderColor: AppColors.successColor,
textColor: AppColors.whiteColor,
fontSize: 16,
textColor: Colors.white,
fontSize: 16.f,
fontWeight: FontWeight.w500,
borderRadius: 12,
padding: EdgeInsets.fromLTRB(10, 0, 10, 0),
height: 45.h,
icon: AppAssets.download,
iconColor: AppColors.whiteColor,
iconColor: Colors.white,
iconSize: 20.h,
).paddingSymmetrical(24.h, 24.h),
),

@ -20,7 +20,7 @@ class AiAnalysisWidget extends StatelessWidget {
padding: EdgeInsets.all(1.5.r), // Border thickness
child: Container(
decoration: BoxDecoration(
color: Colors.white,
color: AppColors.whiteColor,
borderRadius: BorderRadius.circular(22.r),
),
padding: EdgeInsets.all(20.r),
@ -44,7 +44,7 @@ class AiAnalysisWidget extends StatelessWidget {
SizedBox(height: 8.h),
data.summary!.toText14(color: AppColors.textColorLight, height: 1.5, weight: FontWeight.w400),
SizedBox(height: 16.h),
const Divider(color: AppColors.dividerColor, thickness: 1),
Divider(color: AppColors.dividerColor, thickness: 1),
SizedBox(height: 16.h),
],
if (data.aiPredictions != null && data.aiPredictions!.isNotEmpty) ...[
@ -52,7 +52,7 @@ class AiAnalysisWidget extends StatelessWidget {
SizedBox(height: 12.h),
...data.aiPredictions!.map((item) => _buildBulletItem(item)),
SizedBox(height: 16.h),
const Divider(color: AppColors.dividerColor, thickness: 1),
Divider(color: AppColors.dividerColor, thickness: 1),
SizedBox(height: 16.h),
],
if (data.prevention != null && data.prevention!.isNotEmpty) ...[
@ -88,7 +88,7 @@ class AiAnalysisWidget extends StatelessWidget {
child: Container(
width: 5.r,
height: 5.r,
decoration: const BoxDecoration(color: AppColors.blackColor, shape: BoxShape.circle),
decoration: BoxDecoration(color: AppColors.blackColor, shape: BoxShape.circle),
),
),
Expanded(

@ -133,7 +133,7 @@ class _LabAiAnalysisDetailedPageState extends State<LabAiAnalysisDetailedPage> {
),
if (!isLast) ...[
SizedBox(height: 12.h),
const Divider(color: AppColors.dividerColor, thickness: 1),
Divider(color: AppColors.dividerColor, thickness: 1),
SizedBox(height: 12.h),
],
],

@ -59,7 +59,7 @@ class _SearchLabResultsContentState extends State<SearchLabResultsContent> {
title: LocaleKeys.labResults.tr(),
isClose: true,
bottomChild: Container(
color: Colors.white,
color: AppColors.whiteColor,
padding: EdgeInsets.all(ResponsiveExtension(20).h),
child: CustomButton(
text: LocaleKeys.search.tr(),
@ -144,7 +144,8 @@ class SuggestionChip extends StatelessWidget {
borderRadius: BorderRadius.circular(8),
),
child: label.toText12(
color: isSelected ? Colors.white : Colors.black87,
// color: isSelected ? AppColors.textColor : Colors.black87,
color: AppColors.textColor,
fontWeight: FontWeight.w500,
),
),

@ -478,11 +478,12 @@ class _MedicalFilePageState extends State<MedicalFilePage> {
// Using CustomExpandableList
CustomExpandableList(
expansionMode: ExpansionMode.exactlyOne,
dividerColor: Color(0xff2b353e1a),
dividerColor: AppColors.dividerColor,
itemPadding: EdgeInsets.symmetric(vertical: 16.h, horizontal: 14.h),
items: [
ExpandableListItem(
title: LocaleKeys.medicalServices.tr(context: context).toText18(weight: FontWeight.w600),
expandedBackgroundColor: Colors.transparent,
children: [
SizedBox(height: 10.h),
getSelectedTabData(0),
@ -518,53 +519,6 @@ class _MedicalFilePageState extends State<MedicalFilePage> {
defaultTrailingIcon: Utils.buildSvgWithAssets(icon: AppAssets.arrow_down, height: 22.h, width: 22.w, iconColor: AppColors.textColor),
),
).paddingSymmetrical(16.w, 0.0),
// ExpansionTileList(
// shrinkWrap: true,
// trailing: Icon(Icons.arrow_drop_down),
// expansionMode: ExpansionMode.exactlyOne,
// children: <ExpansionTile>[
// ExpansionTile(
// title: "Medical Services".toText20(weight: FontWeight.w600, color: AppColors.textColor),
// iconColor: Color(0xFF2E3039),
// trailing: Utils.buildSvgWithAssets(icon: AppAssets.arrow_down, height: 22.h, width: 22.w),
// children: <Widget>[Text('Child 1')],
// ),
// ExpansionTile(
// title: "Medical Reports".toText20(weight: FontWeight.w600, color: AppColors.textColor),
// children: <Widget>[Text('Child 2')],
// ),
// ExpansionTile(
// title: "Insurance & Payments".toText20(weight: FontWeight.w600, color: AppColors.textColor),
// children: <Widget>[Text('Child 3')],
// ),
// ExpansionTile(
// title: "Tracker & Others".toText20(weight: FontWeight.w600, color: AppColors.textColor),
// children: <Widget>[Text('Child 4')],
// ),
// ],
// ),
// Consumer<MedicalFileViewModel>(builder: (context, medicalFileVM, child) {
// return Column(
// children: [
// CustomTabBar(
// activeTextColor: AppColors.primaryRedColor,
// activeBackgroundColor: AppColors.primaryRedColor.withValues(alpha: .1),
// tabs: [
// CustomTabBarModel(AppAssets.myFilesBottom, LocaleKeys.general.tr(context: context).needTranslation),
// CustomTabBarModel(AppAssets.insurance, LocaleKeys.insurance.tr(context: context)),
// CustomTabBarModel(AppAssets.requests, LocaleKeys.request.tr(context: context).needTranslation),
// CustomTabBarModel(AppAssets.more, "More".needTranslation),
// ],
// onTabChange: (index) {
// medicalFileVM.onTabChanged(index);
// },
// ).paddingSymmetrical(24.w, 0.0),
// SizedBox(height: 24.h),
// getSelectedTabData(medicalFileVM.selectedTabIndex),
// ],
// );
// }),
],
),
);
@ -669,9 +623,9 @@ class _MedicalFilePageState extends State<MedicalFilePage> {
),
);
},
backgroundColor: Color(0xffFEE9EA),
borderColor: Color(0xffFEE9EA),
textColor: Color(0xffED1C2B),
backgroundColor: AppColors.secondaryLightRedColor,
borderColor: AppColors.secondaryLightRedColor,
textColor: AppColors.primaryRedColor,
fontSize: 14.f,
fontWeight: FontWeight.w500,
borderRadius: 12.r,
@ -792,7 +746,7 @@ class _MedicalFilePageState extends State<MedicalFilePage> {
? const CommonShimmerWidget().paddingSymmetrical(0.w, 0.h)
: prescriptionVM.patientPrescriptionOrders.isNotEmpty
? Container(
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: Colors.white, borderRadius: 20.r, hasShadow: false),
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.r, hasShadow: false),
child: Padding(
padding: EdgeInsets.all(16.w),
child: Column(
@ -862,7 +816,7 @@ class _MedicalFilePageState extends State<MedicalFilePage> {
separatorBuilder: (BuildContext cxt, int index) => SizedBox(height: 16.h),
),
SizedBox(height: 16.h),
const Divider(color: AppColors.dividerColor),
Divider(color: AppColors.dividerColor),
SizedBox(height: 16.h),
Row(
children: [

@ -36,6 +36,7 @@ class LabRadCard extends StatelessWidget {
width: 40.w,
height: 40.h,
fit: BoxFit.cover,
applyThemeColor: false
).toShimmer2(isShow: false, radius: 12.r),
SizedBox(width: 8.w),
Flexible(

@ -37,7 +37,7 @@ class MedicalFileCard extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.min,
children: [
Utils.buildSvgWithAssets(icon: svgIcon, width: iconS, height: iconS, fit: BoxFit.contain),
Utils.buildSvgWithAssets(icon: svgIcon, width: iconS, height: iconS, fit: BoxFit.contain, applyThemeColor: false),
SizedBox(height: 8.h),
isLargeText ? label.toText13(color: textColor, isBold: true, maxLine: 2) : label.toText11(color: textColor, isBold: true, maxLine: 2),
],

@ -182,15 +182,15 @@ class PatientSickLeaveCard extends StatelessWidget {
}
Color getStatusColor() {
Color statusColor = Colors.white;
Color statusColor = AppColors.whiteColor;
if (patientSickLeavesResponseModel.status == 1) {
statusColor = Color(0xffCC9B14); // TODO change color as per In Queue design
statusColor = AppColors.statusPendingColor;
} else if (patientSickLeavesResponseModel.status == 2) {
statusColor = AppColors.successColor;
} else if (patientSickLeavesResponseModel.status == 3) {
statusColor = AppColors.primaryRedColor;
} else {
statusColor = Colors.white;
statusColor = AppColors.whiteColor;
}
return statusColor;
}

@ -370,13 +370,13 @@ class _MedicalReportsPageState extends State<MedicalReportsPage> {
},
backgroundColor: AppColors.primaryRedColor,
borderColor: AppColors.primaryRedColor,
textColor: AppColors.whiteColor,
textColor: Colors.white,
fontSize: 16.f,
fontWeight: FontWeight.w500,
borderRadius: 12.r,
height: 46.h,
icon: AppAssets.requests,
iconColor: AppColors.whiteColor,
iconColor: Colors.white,
iconSize: 20.h,
).paddingSymmetrical(24.h, 24.h),
),

@ -74,7 +74,7 @@ class MonthlyReport extends StatelessWidget {
children: [
Row(
children: [
Utils.buildSvgWithAssets(icon: AppAssets.email_icon, width: 40.h, height: 40.h),
Utils.buildSvgWithAssets(icon: AppAssets.email_icon, width: 40.h, height: 40.h, applyThemeColor: false),
SizedBox(width: 8.h),
Column(
crossAxisAlignment: CrossAxisAlignment.start,

@ -80,7 +80,7 @@ class InvoiceListCard extends StatelessWidget {
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.rating_icon, width: 15.w, height: 15.h),
Utils.buildSvgWithAssets(icon: AppAssets.rating_icon, width: 15.w, height: 15.h, applyThemeColor: false),
SizedBox(height: 2.h),
"${getInvoicesListResponseModel.decimalDoctorRate}".toText11(isBold: true, color: AppColors.textColor),
],

@ -240,7 +240,7 @@ class _PrescriptionDetailPageState extends State<PrescriptionDetailPage> {
backgroundColor: widget.prescriptionsResponseModel.isHomeMedicineDeliverySupported! ? AppColors.successColor : AppColors.greyF7Color,
borderColor: AppColors.successColor.withOpacity(0.01),
textColor:
widget.prescriptionsResponseModel.isHomeMedicineDeliverySupported! ? AppColors.whiteColor : AppColors.textColor.withOpacity(0.35),
widget.prescriptionsResponseModel.isHomeMedicineDeliverySupported! ? Colors.white : AppColors.textColor.withOpacity(0.35),
fontSize: 16,
fontWeight: FontWeight.w500,
borderRadius: 12,
@ -248,7 +248,7 @@ class _PrescriptionDetailPageState extends State<PrescriptionDetailPage> {
height: 50.h,
icon: AppAssets.prescription_refill_icon,
iconColor:
widget.prescriptionsResponseModel.isHomeMedicineDeliverySupported! ? AppColors.whiteColor : AppColors.textColor.withOpacity(0.35),
widget.prescriptionsResponseModel.isHomeMedicineDeliverySupported! ? Colors.white : AppColors.textColor.withOpacity(0.35),
iconSize: 20.h,
).paddingSymmetrical(24.h, 24.h),
),

@ -89,7 +89,7 @@ class PrescriptionItemView extends StatelessWidget {
child: Row(
mainAxisSize: MainAxisSize.max,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.prescription_reminder_icon, width: 35.h, height: 35.h).toShimmer2(isShow: isLoading),
Utils.buildSvgWithAssets(icon: AppAssets.prescription_reminder_icon, width: 35.h, height: 35.h, applyThemeColor: false).toShimmer2(isShow: isLoading),
SizedBox(width: 8.h),
Column(
crossAxisAlignment: CrossAxisAlignment.start,

@ -158,7 +158,7 @@ class ProfileSettingsState extends State<ProfileSettings> {
spacing: 8.w,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Utils.buildSvgWithAssets(icon: AppAssets.wallet, width: 40.w, height: 40.h),
Utils.buildSvgWithAssets(icon: AppAssets.wallet, width: 40.w, height: 40.h, applyThemeColor: false),
LocaleKeys.habibWallet.tr(context: context).toText16(weight: FontWeight.w600, maxlines: 2).expanded,
Utils.buildSvgWithAssets(icon: getIt.get<AppState>().isArabic() ? AppAssets.arrow_back : AppAssets.arrow_forward),
],
@ -194,6 +194,38 @@ class ProfileSettingsState extends State<ProfileSettings> {
],
),
LocaleKeys.quickActions.tr(context: context).toText18(weight: FontWeight.w600, textOverflow: TextOverflow.ellipsis, maxlines: 1).paddingOnly(left: 24.w, right: 24.w),
Container(
margin: EdgeInsets.only(left: 24.w, right: 24.w, top: 16.h, bottom: 24.h),
padding: EdgeInsets.only(top: 4.h, bottom: 4.h),
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: true),
child: Column(
children: [
actionItem(AppAssets.language_change, LocaleKeys.language.tr(context: context), () {
showCommonBottomSheetWithoutHeight(context, title: LocaleKeys.language.tr(context: context), child: AppLanguageChange(), callBackFunc: () {}, isFullScreen: false);
}, trailingLabel: Utils.appState.isArabic() ? "العربية" : "English"),
1.divider,
actionItem(AppAssets.bell, LocaleKeys.notificationsSettings.tr(context: context), () {
openAppSettings();
}),
1.divider,
Consumer<ProfileSettingsViewModel>(
builder: (context, profileVm, _) {
return actionItem(
AppAssets.darkModeIcon,
LocaleKeys.darkMode.tr(context: context),
() {
profileVm.toggleDarkMode(!profileVm.isDarkMode);
},
switchValue: profileVm.isDarkMode,
onSwitchChanged: (value) {
profileVm.toggleDarkMode(value);
},
);
},
),
],
),
),
Container(
margin: EdgeInsets.only(left: 24.w, right: 24.w, top: 16.h, bottom: 24.h),
padding: EdgeInsets.only(top: 4.h, bottom: 4.h),
@ -282,7 +314,7 @@ class ProfileSettingsState extends State<ProfileSettings> {
);
}
Widget actionItem(String icon, String label, VoidCallback onPress, {String trailingLabel = "", bool? switchValue, bool isExternalLink = false}) {
Widget actionItem(String icon, String label, VoidCallback onPress, {String trailingLabel = "", bool? switchValue, ValueChanged<bool>? onSwitchChanged, bool isExternalLink = false}) {
return SizedBox(
height: 56.h,
child: Row(
@ -294,7 +326,7 @@ class ProfileSettingsState extends State<ProfileSettings> {
switchValue != null
? Switch(
value: switchValue,
onChanged: (value) {},
onChanged: onSwitchChanged ?? (value) {},
activeThumbColor: AppColors.successColor,
activeTrackColor: AppColors.successColor.withValues(alpha: .15),
)
@ -463,8 +495,8 @@ class FamilyCardWidget extends StatelessWidget {
onPressed: canSwitch ? () => onFamilySwitchPress(profile) : onAddFamilyMemberPress,
backgroundColor: canSwitch ? AppColors.secondaryLightRedColor : AppColors.primaryRedColor,
borderColor: canSwitch ? AppColors.secondaryLightRedColor : AppColors.primaryRedColor,
textColor: canSwitch ? AppColors.primaryRedColor : AppColors.whiteColor,
iconColor: canSwitch ? AppColors.primaryRedColor : AppColors.whiteColor,
textColor: canSwitch ? AppColors.primaryRedColor : Colors.white,
iconColor: canSwitch ? AppColors.primaryRedColor : Colors.white,
height: isFoldable ? 50.h : 45.h,
fontSize: 14.f,
).paddingOnly(top: 12.h, right: 16.w, left: 16.w, bottom: 16.h);

@ -85,14 +85,14 @@ class _RadiologyResultPageState extends State<RadiologyResultPage> {
},
backgroundColor: AppColors.primaryRedColor,
borderColor: AppColors.primaryRedColor,
textColor: AppColors.whiteColor,
textColor: Colors.white,
fontSize: 14,
fontWeight: FontWeight.w500,
borderRadius: 12,
padding: EdgeInsets.fromLTRB(10, 0, 10, 0),
height: 40.h,
icon: AppAssets.download,
iconColor: AppColors.whiteColor,
iconColor: Colors.white,
iconSize: 20.h,
),
SizedBox(height: 16.h),
@ -145,14 +145,14 @@ class _RadiologyResultPageState extends State<RadiologyResultPage> {
},
backgroundColor: AppColors.successColor,
borderColor: AppColors.successColor,
textColor: AppColors.whiteColor,
textColor: Colors.white,
fontSize: 16,
fontWeight: FontWeight.w500,
borderRadius: 12,
padding: EdgeInsets.fromLTRB(10, 0, 10, 0),
height: 45.h,
icon: AppAssets.download,
iconColor: AppColors.whiteColor,
iconColor: Colors.white,
iconSize: 20.h,
).paddingSymmetrical(24.h, 24.h),
),

@ -59,7 +59,7 @@ class _SearchRadiologyContentContentState extends State<SearchRadiologyContent>
title: LocaleKeys.radiology.tr(),
isClose: true,
bottomChild: Container(
color: Colors.white,
color: AppColors.whiteColor,
padding: EdgeInsets.all(ResponsiveExtension(20).h),
child: CustomButton(
text: LocaleKeys.search.tr(),
@ -144,7 +144,8 @@ class SuggestionChip extends StatelessWidget {
borderRadius: BorderRadius.circular(8),
),
child: label.toText12(
color: isSelected ? Colors.white : Colors.black87,
// color: isSelected ? Colors.white : Colors.black87,
color: AppColors.textColor,
fontWeight: FontWeight.w500,
),
),

@ -19,7 +19,7 @@ class HealthChart extends StatelessWidget {
height: 200,
padding: const EdgeInsets.all(16),
decoration: BoxDecoration(
color: Colors.white,
color: AppColors.whiteColor,
borderRadius: BorderRadius.circular(16),
boxShadow: [
BoxShadow(

@ -49,7 +49,7 @@ class PossibleConditionsPage extends StatelessWidget {
child: Container(
height: 80.h,
decoration: BoxDecoration(
color: Colors.white,
color: AppColors.whiteColor,
borderRadius: BorderRadius.circular(10.r),
),
),

@ -184,7 +184,7 @@ class _RiskFactorsScreenState extends State<RiskFactorsScreen> {
Container(
height: 40.h,
decoration: BoxDecoration(
color: Colors.white,
color: AppColors.whiteColor,
borderRadius: BorderRadius.circular(24.r),
),
).toShimmer2(isShow: true, radius: 24.r),

@ -160,7 +160,7 @@ class _SuggestionsScreenState extends State<SuggestionsScreen> {
Container(
height: 40.h,
decoration: BoxDecoration(
color: Colors.white,
color: AppColors.whiteColor,
borderRadius: BorderRadius.circular(24.r),
),
).toShimmer2(isShow: true, radius: 24.r),

@ -222,7 +222,7 @@ class _SymptomsSelectorPageState extends State<SymptomsSelectorPage> {
Container(
height: 40.h,
decoration: BoxDecoration(
color: Colors.white,
color: AppColors.whiteColor,
borderRadius: BorderRadius.circular(24.r),
),
).toShimmer2(isShow: true, radius: 24.r),

@ -275,7 +275,7 @@ class _TriagePageState extends State<TriagePage> {
Container(
height: 40.h,
decoration: BoxDecoration(
color: Colors.white,
color: AppColors.whiteColor,
borderRadius: BorderRadius.circular(24.r),
),
).toShimmer2(isShow: true, radius: 24.r),

@ -34,7 +34,7 @@ class OrganDot extends StatelessWidget {
child: Container(
width: size.w * 0.25,
height: size.h * 0.25,
decoration: const BoxDecoration(
decoration: BoxDecoration(
shape: BoxShape.circle,
color: AppColors.whiteColor,
),

@ -264,6 +264,7 @@ class _AncillaryOrderPaymentPageState extends State<AncillaryOrderPaymentPage> {
width: 200.h,
height: 80.h,
fit: BoxFit.contain,
applyThemeColor: false,
).paddingSymmetrical(24.h, 0.h).onPress(() {
if (!todoSectionViewModel.isProcessingPayment) {
if (Utils.havePrivilege(103)) {

@ -673,7 +673,7 @@ class _AncillaryOrderDetailsListState extends State<AncillaryOrderDetailsList> {
);
},
isDisabled: !isButtonEnabled,
textColor: AppColors.whiteColor,
textColor: Colors.white,
borderRadius: 12.r,
borderColor: Colors.transparent,
padding: EdgeInsets.symmetric(vertical: 16.h),

@ -79,7 +79,7 @@ class _WaterConsumptionPageState extends State<WaterConsumptionPage> {
subTitle.toText18(weight: FontWeight.w600),
],
),
Utils.buildSvgWithAssets(icon: AppAssets.greenTickIcon)
Utils.buildSvgWithAssets(icon: AppAssets.greenTickIcon, applyThemeColor: false)
],
).paddingSymmetrical(0, 8.h);
}

@ -75,7 +75,7 @@ class _WaterMonitorSettingsPageState extends State<WaterMonitorSettingsPage> {
message: "",
child: Container(
padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h),
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(20.r)),
decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)),
child: ListView.separated(
shrinkWrap: true,
itemCount: items.length,

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:hmg_patient_app_new/theme/colors.dart';
class AppTheme {
static ThemeData getTheme(isArabic) => ThemeData(
@ -14,33 +15,13 @@ class AppTheme {
},
),
hintColor: Colors.grey[400],
// colorScheme: ColorScheme.fromSwatch(accentColor: MyColors.backgroundColor),
disabledColor: Colors.grey[300],
// errorColor: const Colors,
// scaffoldBackgroundColor: MyColors.backgroundColor,
textSelectionTheme: const TextSelectionThemeData(cursorColor: Colors.grey, selectionColor: Color.fromRGBO(80, 100, 253, 0.5), selectionHandleColor: Colors.grey),
canvasColor: Colors.white,
// backgroundColor: const Color.fromRGBO(255, 255, 255, 1),
highlightColor: Colors.grey[100]!.withOpacity(0.4),
splashColor: Colors.transparent,
// primaryColor: primaryColor,
// primaryColorDark: primaryColor,
// toggleableActiveColor: secondaryColor,
// indicatorColor: secondaryColor,
// bottomSheetTheme: const BottomSheetThemeData(
// backgroundColor: Color(0xFFE0E0E0),
// ),
bottomSheetTheme: BottomSheetThemeData(
backgroundColor: Colors.black.withOpacity(0)),
// primaryTextTheme: const TextTheme(
// bodyText2: TextStyle(color: Colors.white),
// ),
// iconTheme: const IconThemeData(color: MyColors.darkTextColor),
// textTheme: const TextTheme(
// bodyText1: TextStyle(color: Colors.black, letterSpacing: 0.6),
// headline1: TextStyle(color: Colors.white, letterSpacing: 0.6),
// headline2: TextStyle(color: Colors.white, letterSpacing: 0.6),
// ),
floatingActionButtonTheme: const FloatingActionButtonThemeData(highlightElevation: 2, disabledElevation: 0, elevation: 2),
appBarTheme: AppBarTheme(
color: const Color(0xff515A5D),
@ -52,6 +33,38 @@ class AppTheme {
surfaceTintColor: Colors.transparent,
),
);
static ThemeData getDarkTheme(isArabic) => ThemeData(
fontFamily: isArabic ? 'GESSTwo' : 'Poppins',
primarySwatch: Colors.red,
visualDensity: VisualDensity.adaptivePlatformDensity,
brightness: Brightness.dark,
pageTransitionsTheme: const PageTransitionsTheme(
builders: {
TargetPlatform.android: ZoomPageTransitionsBuilder(),
TargetPlatform.iOS: CupertinoPageTransitionsBuilder()
},
),
hintColor: Colors.grey[600],
disabledColor: Colors.grey[700],
textSelectionTheme: const TextSelectionThemeData(cursorColor: Colors.grey, selectionColor: Color.fromRGBO(80, 100, 253, 0.5), selectionHandleColor: Colors.grey),
canvasColor: AppColors.dark.scaffoldBgColor,
scaffoldBackgroundColor: AppColors.dark.scaffoldBgColor,
highlightColor: Colors.grey[800]!.withOpacity(0.4),
splashColor: Colors.transparent,
bottomSheetTheme: BottomSheetThemeData(
backgroundColor: Colors.black.withOpacity(0)),
floatingActionButtonTheme: const FloatingActionButtonThemeData(highlightElevation: 2, disabledElevation: 0, elevation: 2),
appBarTheme: AppBarTheme(
color: AppColors.dark.scaffoldBgColor,
elevation: 0.0,
actionsIconTheme: const IconThemeData(
color: Colors.white,
),
systemOverlayStyle: SystemUiOverlayStyle.light,
surfaceTintColor: Colors.transparent,
),
);
}
extension ExtendedRevoCheckTheme on TextTheme {

@ -1,118 +1,310 @@
import 'package:flutter/material.dart';
class AppColors {
/// Global dark-mode flag toggled by ProfileSettingsViewModel.
/// When true, every getter below returns the dark palette value.
static bool isDarkMode = false;
static const transparent = Colors.transparent;
static const mainPurple = Color(0xFF7954F7); // #7954F7
static const scaffoldBgColor = Color(0xFFF8F8F8); // #F8F8F8
static const bottomSheetBgColor = Color(0xFFF8F8FA); // #F8F8FA
static const lightGreyEFColor = Color(0xffeaeaff); // #EAEAFF
static const greyF7Color = Color(0xffF7F7F7); // #F7F7F7
static const greyInfoTextColor = Color(0xff777777); // #777777
static const lightGrayColor = Color(0xff808080); // #808080
static const greyTextColorLight = Color(0xFFA2A2A2); // #A2A2A2
// New UI Colors
static const whiteColor = Color(0xFFffffff); // #FFFFFF
static const Color bgScaffoldColor = Color(0xffF8F8F8); // #F8F8F8
static const Color primaryRedColor = Color(0xFFED1C2B); // #ED1C2B
static const Color primaryRedBorderColor = Color(0xFFED1C2B); // #ED1C2B
static const Color secondaryLightRedColor = Color(0xFFFEE9EA); // #FEE9EA
static const Color secondaryLightRedBorderColor = Color(0xFFFEE9EA); // #FEE9EA
static const Color bgRedLightColor = Color(0xFFFEE9EA); // #FEE9EA
static const Color bgGreenColor = Color(0xFF18C273); // #18C273
static const Color textColor = Color(0xFF2E3039); // #2E3039
static const Color borderGrayColor = Color(0x332E3039); // #2E3039 (20% opacity)
static const Color textColorLight = Color(0xFF5E5E5E); // #5E5E5E
static const Color borderOnlyColor = Color(0xFF2E3039); // #2E3039
static const Color chipBorderColorOpacity20 = Color(0x332E3039); // #2E3039 (20% opacity)
static const Color dividerColor = Color(0x40D2D2D2); // #D2D2D2 (25% opacity)
static const Color warningColorYellow = Color(0xFFF4A308); // #F4A308
static const Color blackBgColor = Color(0xFF2E3039); // #2E3039
static const blackColor = textColor; // #2E3039
static const Color inputLabelTextColor = Color(0xff898A8D); // #898A8D
static const Color greyTextColor = Color(0xFF8F9AA3); // #8F9AA3
static const Color lightGrayBGColor = Color(0x142E3039); // #2E3039 (8% opacity)
static const Color checkBoxBorderColor = Color(0xffD2D2D2); // #D2D2D2
static const Color pharmacyBGColor = Color(0xFF359846); // #359846
static const lightGreenColor = Color(0xFF0ccedde); // #0CCEDDE
static const textGreenColor = Color(0xFF18C273); // #18C273
static const Color ratingColorYellow = Color(0xFFFFAF15); // #FFAF15
static const Color spacerLineColor = Color(0x2E30391A); // #2E3039 (10% opacity)
//Chips
static const Color successColor = Color(0xff18C273); // #18C273
static const Color successLightBgColor = Color(0xffDDF6EA); // #DDF6EA
static const Color errorColor = Color(0xFFED1C2B); // #ED1C2B
static const Color alertColor = Color(0xFFD48D05); // #D48D05
static const Color infoColor = Color(0xFF0B85F7); // #0B85F7
static const Color warningColor = Color(0xFFFFCC00); // #FFCC00
static const Color greyColor = Color(0xFFEFEFF0); // #EFEFF0
static const Color chipPrimaryRedBorderColor = Color(0xFFED1C2B); // #ED1C2B
static const Color chipSecondaryLightRedColor = Color(0xFFFEE9EA); // #FEE9EA
// static const Color chipSecondaryLightRedColor = Color(0xFFFF9E15); // #FEE9EA
static const Color successLightColor = Color(0xFF18C273); // #18C273
static const Color errorLightColor = Color(0xFFED1C2B); // #ED1C2B
static const Color alertLightColor = Color(0xFFD48D05); // #D48D05
static const Color infoLightColor = Color(0xFF0B85F7); // #0B85F7
static const Color warningLightColor = Color(0xFFFFCC00); // #FFCC00
static const Color greyLightColor = Color(0xFFEFEFF0); // #EFEFF0
static const Color thumbColor = Color(0xFF18C273); // #18C273
static const Color switchBackgroundColor = Color(0x2618C273); // #18C273 (15% opacity)
static const Color bottomNAVBorder = Color(0xFFEEEEEE); // #EEEEEE
static const Color quickLoginColor = Color(0xFF666666); // #666666
static const Color tooltipTextColor = Color(0xFF414D55); // #414D55
static const Color graphGridColor = Color(0x4D18C273); // #18C273 (30% opacity)
static const Color criticalLowAndHigh = Color(0xFFED1C2B); // #ED1C2B
static const Color highAndLow = Color(0xFFFFAF15); // #FFAF15
static const Color labelTextColor = Color(0xFF838383); // #838383
static const Color calenderTextColor = Color(0xFFD0D0D0); // #D0D0D0
static const Color lightGreenButtonColor = Color(0x2618C273); // #18C273 (15% opacity)
static const Color lightRedButtonColor = Color(0x1AED1C2B); // #ED1C2B (10% opacity)
// Status Colors
static const Color statusPendingColor = Color(0xffCC9B14); // #CC9B14
static const Color statusProcessingColor = Color(0xff2E303A); // #2E303A
static const Color statusCompletedColor = Color(0xff359846); // #359846
static const Color statusRejectedColor = Color(0xffD02127); // #D02127
// Info Banner Colors
static const Color infoBannerBgColor = Color(0xFFFFF4E6); // #FFF4E6
static const Color infoBannerBorderColor = Color(0xFFFFE5B4); // #FFE5B4
static const Color infoBannerIconColor = Color(0xFFCC9B14); // #CC9B14
static const Color infoBannerTextColor = Color(0xFF856404); // #856404
// SymptomsChecker
static const Color chipColorSeekMedicalAdvice = Color(0xFFFFAF15); // #FFAF15
static const Color chipTextColorSeekMedicalAdvice = Color(0xFFD48D05); // #AB7103
static const Color chipColorMonitor = Color(0xFF18C273); // #18C273
static const Color chipColorEmergency = Color(0xFFED1C2B); // #ED1C2B
// Services Page Colors
static const Color eReferralCardColor = Color(0xFFFF8012); // #FF8012
static const Color bloodDonationCardColor = Color(0xFFFF5662); // #FF5662
static const Color myChildVaccineCardColor = Color(0xFFFF2D78); // #FF5662
static const Color bookAppointment = Color(0xFF415364); // #415364
// Scaffold / Background
static Color get scaffoldBgColor => isDarkMode ? dark.scaffoldBgColor : const Color(0xFFF8F8F8);
static Color get bottomSheetBgColor => isDarkMode ? dark.bottomSheetBgColor : const Color(0xFFF8F8FA);
static Color get lightGreyEFColor => isDarkMode ? dark.lightGreyEFColor : const Color(0xffeaeaff);
static Color get greyF7Color => isDarkMode ? dark.greyF7Color : const Color(0xffF7F7F7);
static Color get greyInfoTextColor => isDarkMode ? dark.greyInfoTextColor : const Color(0xff777777);
static Color get lightGrayColor => isDarkMode ? dark.lightGrayColor : const Color(0xff808080);
static Color get greyTextColorLight => isDarkMode ? dark.greyTextColorLight : const Color(0xFFA2A2A2);
static Color get mainPurple => isDarkMode ? dark.mainPurple : const Color(0xFF7954F7);
// Core Colors
static Color get whiteColor => isDarkMode ? dark.whiteColor : const Color(0xFFffffff);
// static const Color primaryRedColor = Color(0xFFED1C2B);
static Color get primaryRedColor => isDarkMode ? dark.primaryRedColor : Color(0xFFED1C2B);
static Color get secondaryLightRedColor => isDarkMode ? dark.secondaryLightRedColor : const Color(0xFFFEE9EA);
static const Color successColor = Color(0xFF18C273);
static Color get successLightBgColor => isDarkMode ? dark.successLightBgColor : const Color(0xffDDF6EA);
static Color get greyColor => isDarkMode ? dark.greyColor : const Color(0xFFEFEFF0);
static Color get chipBgColor => isDarkMode ? dark.chipBgColor : const Color(0xFFEFEFF0);
static Color get textColor => isDarkMode ? dark.textColor : const Color(0xFF2E3039);
static Color get iconColor => isDarkMode ? dark.iconColor : const Color(0xFF2E3039);
static Color get borderGrayColor => isDarkMode ? dark.borderGrayColor : const Color(0x332E3039);
static Color get textColorLight => isDarkMode ? dark.textColorLight : const Color(0xFF5E5E5E);
static Color get dividerColor => isDarkMode ? dark.dividerColor : const Color(0x40D2D2D2);
static Color get warningColorYellow => isDarkMode ? dark.warningColorYellow : const Color(0xFFF4A308);
static Color get inputLabelTextColor => isDarkMode ? dark.inputLabelTextColor : const Color(0xff898A8D);
static Color get greyTextColor => isDarkMode ? dark.greyTextColor : const Color(0xFF8F9AA3);
static Color get lightGrayBGColor => isDarkMode ? dark.lightGrayBGColor : const Color(0x142E3039);
static Color get checkBoxBorderColor => isDarkMode ? dark.checkBoxBorderColor : const Color(0xffD2D2D2);
static Color get pharmacyBGColor => isDarkMode ? dark.pharmacyBGColor : const Color(0xFF359846);
static Color get lightGreenColor => isDarkMode ? dark.lightGreenColor : const Color(0xFF0ccedde);
static Color get ratingColorYellow => isDarkMode ? dark.ratingColorYellow : const Color(0xFFFFAF15);
static Color get spacerLineColor => isDarkMode ? dark.spacerLineColor : const Color(0x2E30391A);
// Semantic / Status Colors
static Color get errorColor => isDarkMode ? dark.errorColor : const Color(0xFFED1C2B);
static Color get alertColor => isDarkMode ? dark.alertColor : const Color(0xFFD48D05);
static Color get infoColor => isDarkMode ? dark.infoColor : const Color(0xFF0B85F7);
static Color get warningColor => isDarkMode ? dark.warningColor : const Color(0xFFFFCC00);
static Color get switchBackgroundColor => isDarkMode ? dark.switchBackgroundColor : const Color(0x2618C273);
static Color get bottomNAVBorder => isDarkMode ? dark.bottomNAVBorder : const Color(0xFFEEEEEE);
static Color get quickLoginColor => isDarkMode ? dark.quickLoginColor : const Color(0xFF666666);
static Color get tooltipTextColor => isDarkMode ? dark.tooltipTextColor : const Color(0xFF414D55);
static Color get graphGridColor => isDarkMode ? dark.graphGridColor : const Color(0x4D18C273);
static Color get highAndLow => isDarkMode ? dark.highAndLow : const Color(0xFFFFAF15);
static Color get labelTextColor => isDarkMode ? dark.labelTextColor : const Color(0xFF838383);
static Color get calenderTextColor => isDarkMode ? dark.calenderTextColor : const Color(0xFFD0D0D0);
static Color get lightGreenButtonColor => isDarkMode ? dark.lightGreenButtonColor : const Color(0x2618C273);
static Color get lightRedButtonColor => isDarkMode ? dark.lightRedButtonColor : const Color(0x1AED1C2B);
// Status Colors
static Color get statusPendingColor => isDarkMode ? dark.statusPendingColor : const Color(0xffCC9B14);
static Color get statusProcessingColor => isDarkMode ? dark.statusProcessingColor : const Color(0xff2E303A);
static Color get statusCompletedColor => isDarkMode ? dark.statusCompletedColor : const Color(0xff359846);
static Color get statusRejectedColor => isDarkMode ? dark.statusRejectedColor : const Color(0xffD02127);
// Info Banner Colors
static Color get infoBannerBgColor => isDarkMode ? dark.infoBannerBgColor : const Color(0xFFFFF4E6);
static Color get infoBannerBorderColor => isDarkMode ? dark.infoBannerBorderColor : const Color(0xFFFFE5B4);
static Color get infoBannerIconColor => isDarkMode ? dark.infoBannerIconColor : const Color(0xFFCC9B14);
static Color get infoBannerTextColor => isDarkMode ? dark.infoBannerTextColor : const Color(0xFF856404);
// Symptoms Checker <EFBFBD><EFBFBD>
static Color get chipColorSeekMedicalAdvice => isDarkMode ? dark.chipColorSeekMedicalAdvice : const Color(0xFFFFAF15);
static Color get chipTextColorSeekMedicalAdvice => isDarkMode ? dark.chipTextColorSeekMedicalAdvice : const Color(0xFFD48D05);
// Services Page Colors
static Color get eReferralCardColor => isDarkMode ? dark.eReferralCardColor : const Color(0xFFFF8012);
static Color get bloodDonationCardColor => isDarkMode ? dark.bloodDonationCardColor : const Color(0xFFFF5662);
static Color get myChildVaccineCardColor => isDarkMode ? dark.myChildVaccineCardColor : const Color(0xFFFF2D78);
static Color get bookAppointment => isDarkMode ? dark.bookAppointment : const Color(0xFF415364);
// Water Monitor
static Color get blueColor => isDarkMode ? dark.blueColor : const Color(0xFF4EB5FF);
static Color get blueGradientColorOne => isDarkMode ? dark.blueGradientColorOne : const Color(0xFFF1F7FD);
static Color get blueGradientColorTwo => isDarkMode ? dark.blueGradientColorTwo : const Color(0xFFD9EFFF);
// Shimmer
static Color get shimmerBaseColor => isDarkMode ? dark.shimmerBaseColor : const Color(0xFFE0E0E0);
static Color get shimmerHighlightColor => isDarkMode ? dark.shimmerHighlightColor : const Color(0xFFF5F5F5);
static Color get covid29Color => isDarkMode ? dark.covid29Color : const Color(0xff2563EB);
static Color get lightGreyTextColor => isDarkMode ? dark.lightGreyTextColor : const Color(0xFF959595);
static Color get labelColorYellow => isDarkMode ? dark.labelColorYellow : const Color(0xFFFBCB6E);
static const LinearGradient aiLinearGradient =
LinearGradient(colors: [Color(0xFF8A38F5), Color(0xFFE20BBB)], begin: Alignment.topLeft, end: Alignment.bottomRight);
// Aliases
static Color get bgScaffoldColor => scaffoldBgColor;
static Color get primaryRedBorderColor => primaryRedColor;
static Color get chipPrimaryRedBorderColor => primaryRedColor;
static Color get criticalLowAndHigh => primaryRedColor;
static Color get chipColorEmergency => primaryRedColor;
static Color get errorLightColor => primaryRedColor;
static Color get secondaryLightRedBorderColor => secondaryLightRedColor;
static Color get bgRedLightColor => secondaryLightRedColor;
static Color get chipSecondaryLightRedColor => secondaryLightRedColor;
static Color get blackBgColor => textColor;
static Color get blackColor => textColor;
static Color get borderOnlyColor => textColor;
static Color get chipBorderColorOpacity20 => borderGrayColor;
static Color get bgGreenColor => successColor;
static Color get textGreenColor => successColor;
static Color get successLightColor => successColor;
static Color get thumbColor => successColor;
static Color get chipColorMonitor => successColor;
static Color get greyLightColor => greyColor;
static Color get alertLightColor => alertColor;
static Color get infoLightColor => infoColor;
static Color get warningLightColor => warningColor;
// Dark Mode Palette
static const AppColorsDark dark = AppColorsDark();
}
// ---------------------------------------------------------------------------
// Dark palette mirrors every color in AppColors with a dark-friendly value.
// ---------------------------------------------------------------------------
class AppColorsDark {
const AppColorsDark();
// Scaffold / Background
Color get scaffoldBgColor => const Color(0xFF191919);
Color get bottomSheetBgColor => const Color(0xFF1C1C1E);
Color get lightGreyEFColor => const Color(0xFF2A2A3A);
Color get greyF7Color => const Color(0xFF1E1E1E);
Color get greyInfoTextColor => const Color(0xFF9E9E9E);
Color get lightGrayColor => const Color(0xFF9E9E9E);
Color get greyTextColorLight => const Color(0xFF757575);
// NEW was missing from AppColorsDark
Color get mainPurple => const Color(0xFF9B7AFF); // brighter purple for dark surfaces
// Core
Color get baseColor => const Color(0xFF1E1E1E);
// NEW maps whiteColor dark surface color
Color get whiteColor => const Color(0xFF1E1E1E); // surface replacement for white
Color get primaryRedColor => const Color(0xFFDE5C5D);
Color get secondaryLightRedColor => const Color(0xFF3A1015);
Color get successColor => const Color(0xFF18C273);
Color get successLightBgColor => const Color(0xFF0D2E1F);
Color get textColor => const Color(0xFFFFFFFF);
Color get iconColor => const Color(0xFFFFFFFF);
Color get borderGrayColor => const Color(0x55ECECEC);
Color get textColorLight => const Color(0xFFB0B0B0);
Color get dividerColor => const Color(0x33FFFFFF);
Color get warningColorYellow => const Color(0xFFF4A308);
Color get inputLabelTextColor => const Color(0xFF9E9E9E);
Color get greyTextColor => const Color(0xFF8F9AA3);
Color get lightGrayBGColor => const Color(0x22FFFFFF);
Color get checkBoxBorderColor => const Color(0xFF555555);
Color get pharmacyBGColor => const Color(0xFF359846);
// NEW was missing from AppColorsDark
Color get lightGreenColor => const Color(0xFF0ccedde); // same teal accent works on dark
Color get ratingColorYellow => const Color(0xFFFFAF15);
Color get spacerLineColor => const Color(0x22FFFFFF);
// Semantic / Status
Color get errorColor => const Color(0xFFD63D48);
Color get alertColor => const Color(0xFFD48D05);
Color get infoColor => const Color(0xFF4DA6FF);
Color get warningColor => const Color(0xFFFFCC00);
Color get greyColor => const Color(0xFF2C2C2E);
Color get chipBgColor => const Color(0xFF3E3E3E);
Color get cardDarkBorderColor => const Color(0x0DEAEAEA);
Color get serviceCardButtonColor => const Color(0xFF3E3E3E);
Color get switchBackgroundColor => const Color(0x2618C273);
Color get bottomNAVBorder => const Color(0xFF2C2C2E);
Color get quickLoginColor => const Color(0xFF9E9E9E);
Color get tooltipTextColor => const Color(0xFFCFD8DC);
Color get graphGridColor => const Color(0x4D18C273);
Color get highAndLow => const Color(0xFFFFAF15);
Color get labelTextColor => const Color(0xFF9E9E9E);
Color get calenderTextColor => const Color(0xFF555555);
Color get lightGreenButtonColor => const Color(0x2618C273);
Color get lightRedButtonColor => const Color(0x1AED1C2B);
// Status
Color get statusPendingColor => const Color(0xFFCC9B14);
Color get statusProcessingColor => const Color(0xFFECECEC);
Color get statusCompletedColor => const Color(0xFF359846);
Color get statusRejectedColor => const Color(0xFFD02127);
// Info Banner
Color get infoBannerBgColor => const Color(0xFF2A1F0A);
Color get infoBannerBorderColor => const Color(0xFF5A3D0A);
Color get infoBannerIconColor => const Color(0xFFCC9B14);
Color get infoBannerTextColor => const Color(0xFFFFCB6B);
// Symptoms Checker
Color get chipColorSeekMedicalAdvice => const Color(0xFFFFAF15);
Color get chipTextColorSeekMedicalAdvice => const Color(0xFFD48D05);
// Services Page
Color get eReferralCardColor => const Color(0xFFFF8012);
Color get bloodDonationCardColor => const Color(0xFFFF5662);
Color get myChildVaccineCardColor => const Color(0xFFFF2D78);
Color get bookAppointment => const Color(0xFF415364);
// Water Monitor
Color get blueColor => const Color(0xFF4EB5FF);
Color get blueGradientColorOne => const Color(0xFF101C2A);
Color get blueGradientColorTwo => const Color(0xFF0D2235);
// Shimmer
Color get shimmerBaseColor => const Color(0xFF2C2C2C);
Color get shimmerHighlightColor => const Color(0xFF3D3D3D);
Color get covid29Color => const Color(0xFF2563EB);
Color get lightGreyTextColor => const Color(0xFF757575);
Color get labelColorYellow => const Color(0xFFFBCB6E);
// Aliases
Color get bgScaffoldColor => scaffoldBgColor;
Color get primaryRedBorderColor => primaryRedColor;
Color get chipPrimaryRedBorderColor => primaryRedColor;
Color get criticalLowAndHigh => primaryRedColor;
Color get chipColorEmergency => primaryRedColor;
Color get errorLightColor => primaryRedColor;
Color get secondaryLightRedBorderColor => secondaryLightRedColor;
Color get bgRedLightColor => secondaryLightRedColor;
Color get chipSecondaryLightRedColor => secondaryLightRedColor;
Color get blackBgColor => textColor;
Color get blackColor => textColor;
Color get borderOnlyColor => textColor;
Color get chipBorderColorOpacity20 => borderGrayColor;
Color get bgGreenColor => successColor;
Color get textGreenColor => successColor;
Color get successLightColor => successColor;
Color get thumbColor => successColor;
Color get chipColorMonitor => successColor;
Color get greyLightColor => greyColor;
Color get alertLightColor => alertColor;
Color get infoLightColor => infoColor;
Color get warningLightColor => warningColor;
}
// ---------------------------------------------------------------------------
// BuildContext extension resolves the right palette based on theme brightness
// ---------------------------------------------------------------------------
extension AppColorsContext on BuildContext {
bool get _isDark => Theme.of(this).brightness == Brightness.dark;
// Scaffold / Background
Color get scaffoldBgColor => _isDark ? AppColors.dark.scaffoldBgColor : const Color(0xFFF8F8F8);
Color get bottomSheetBgColor => _isDark ? AppColors.dark.bottomSheetBgColor : const Color(0xFFF8F8FA);
Color get greyF7Color => _isDark ? AppColors.dark.greyF7Color : const Color(0xffF7F7F7);
Color get greyInfoTextColor => _isDark ? AppColors.dark.greyInfoTextColor : const Color(0xff777777);
Color get lightGrayColor => _isDark ? AppColors.dark.lightGrayColor : const Color(0xff808080);
// Core
Color get cardBaseColor => _isDark ? AppColors.dark.baseColor : const Color(0xFFFFFFFF);
Color get primaryRedColor => _isDark ? AppColors.dark.primaryRedColor : AppColors.primaryRedColor;
Color get secondaryLightRedColor => _isDark ? AppColors.dark.serviceCardButtonColor : const Color(0xFFFEE9EA);
Color get secondaryLightRedForegroundColor => _isDark ? const Color(0xFFFFFFFF) : AppColors.primaryRedColor;
Color get successColor => AppColors.successColor;
Color get successLightBgColor => _isDark ? AppColors.dark.successLightBgColor : const Color(0xffDDF6EA);
Color get textColor => _isDark ? AppColors.dark.textColor : const Color(0xFF2E3039);
Color get iconColor => _isDark ? AppColors.dark.iconColor : const Color(0xFF2E3039);
Color get borderGrayColor => _isDark ? AppColors.dark.borderGrayColor : const Color(0x332E3039);
Color get textColorLight => _isDark ? AppColors.dark.textColorLight : const Color(0xFF5E5E5E);
Color get dividerColor => _isDark ? AppColors.dark.dividerColor : const Color(0x40D2D2D2);
Color get inputLabelTextColor => _isDark ? AppColors.dark.inputLabelTextColor : const Color(0xff898A8D);
Color get greyTextColor => AppColors.greyTextColor;
Color get lightGrayBGColor => _isDark ? AppColors.dark.lightGrayBGColor : const Color(0x142E3039);
Color get checkBoxBorderColor => _isDark ? AppColors.dark.checkBoxBorderColor : const Color(0xffD2D2D2);
// Status / Semantic
Color get errorColor => _isDark ? AppColors.dark.errorColor : const Color(0xFFED1C2B);
Color get alertColor => AppColors.alertColor;
Color get infoColor => _isDark ? AppColors.dark.infoColor : const Color(0xFF0B85F7);
Color get warningColor => AppColors.warningColor;
Color get greyColor => _isDark ? AppColors.dark.greyColor : const Color(0xFFEFEFF0);
Color get chipBgColor => _isDark ? AppColors.dark.chipBgColor : const Color(0xFFEFEFF0);
Color get cardDarkBorderColor => _isDark ? AppColors.dark.cardDarkBorderColor : Colors.transparent;
Color get serviceCardButtonColor => _isDark ? AppColors.dark.serviceCardButtonColor : const Color(0xFF2E3039);
Color get bottomNAVBorder => _isDark ? AppColors.dark.bottomNAVBorder : const Color(0xFFEEEEEE);
Color get labelTextColor => _isDark ? AppColors.dark.labelTextColor : const Color(0xFF838383);
Color get lightGreyTextColor => _isDark ? AppColors.dark.lightGreyTextColor : const Color(0xFF959595);
// Info Banner
Color get infoBannerBgColor => _isDark ? AppColors.dark.infoBannerBgColor : const Color(0xFFFFF4E6);
Color get infoBannerBorderColor => _isDark ? AppColors.dark.infoBannerBorderColor : const Color(0xFFFFE5B4);
Color get infoBannerIconColor => AppColors.infoBannerIconColor;
Color get infoBannerTextColor => _isDark ? AppColors.dark.infoBannerTextColor : const Color(0xFF856404);
// Water Monitor
static const Color blueColor = Color(0xFF4EB5FF); // #4EB5FF
static const Color blueGradientColorOne = Color(0xFFF1F7FD); // #F1F7FD
static const Color blueGradientColorTwo = Color(0xFFD9EFFF); // #D9EFFF
Color get blueColor => AppColors.blueColor;
Color get blueGradientColorOne => _isDark ? AppColors.dark.blueGradientColorOne : const Color(0xFFF1F7FD);
Color get blueGradientColorTwo => _isDark ? AppColors.dark.blueGradientColorTwo : const Color(0xFFD9EFFF);
// Shimmer
static const Color shimmerBaseColor = Color(0xFFE0E0E0); // #E0E0E0
static const Color shimmerHighlightColor = Color(0xFFF5F5F5); // #F5F5F5
static const Color covid29Color = Color(0xff2563EB); // #2563EB
static const Color lightGreyTextColor = Color(0xFF959595);
static const Color labelColorYellow = Color(0xFFFBCB6E);
Color get shimmerBaseColor => _isDark ? AppColors.dark.shimmerBaseColor : const Color(0xFFE0E0E0);
Color get shimmerHighlightColor => _isDark ? AppColors.dark.shimmerHighlightColor : const Color(0xFFF5F5F5);
static const LinearGradient aiLinearGradient = LinearGradient(colors: [Color(0xFF8A38F5), Color(0xFFE20BBB)], begin: Alignment.topLeft, end: Alignment.bottomRight);
// Aliases
Color get bgScaffoldColor => scaffoldBgColor;
Color get bgGreenColor => successColor;
Color get bgRedLightColor => secondaryLightRedColor;
Color get blackColor => textColor;
Color get blackBgColor => textColor;
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save