From d17c35e54e54b49b71b95129f48334e9fe7439d9 Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Tue, 30 Sep 2025 17:41:41 +0300 Subject: [PATCH] Completed the updated design --- assets/new_design_icons/text_bg_leaf.svg | 3 + lib/constants/app_constants.dart | 9 +- lib/models/global_config_model.dart | 8 +- lib/models/weathers_widget_model.dart | 6 +- lib/repositories/screen_details_repo.dart | 20 +- lib/views/common_widgets/app_footer.dart | 430 ++++++++++++------ .../common_widgets/app_general_widgets.dart | 153 +++++-- lib/views/common_widgets/app_header.dart | 28 +- .../common_widgets/date_display_widget.dart | 59 +++ .../common_widgets/headline_tag_widget.dart | 99 ++++ .../components/priority_tickets.dart | 60 ++- .../components/priority_tickets_sidelist.dart | 198 ++++---- .../components/ticket_item_calling_card.dart | 162 +++---- .../components/ticket_item_normal_card.dart | 162 ++++--- .../main_queue_screen/main_queue_screen.dart | 17 +- pubspec.yaml | 6 +- 16 files changed, 957 insertions(+), 463 deletions(-) create mode 100644 assets/new_design_icons/text_bg_leaf.svg create mode 100644 lib/views/common_widgets/date_display_widget.dart create mode 100644 lib/views/common_widgets/headline_tag_widget.dart diff --git a/assets/new_design_icons/text_bg_leaf.svg b/assets/new_design_icons/text_bg_leaf.svg new file mode 100644 index 0000000..4fd0345 --- /dev/null +++ b/assets/new_design_icons/text_bg_leaf.svg @@ -0,0 +1,3 @@ + + + diff --git a/lib/constants/app_constants.dart b/lib/constants/app_constants.dart index bb42a71..3b03a28 100644 --- a/lib/constants/app_constants.dart +++ b/lib/constants/app_constants.dart @@ -31,9 +31,13 @@ class AppStrings { static String openAppNativeFunctionName = "reopenApp"; - static String dummyRssFeedText = - "Breaking: New Flutter 3.16 released with enhanced performance and stability features • Weather Update: Sunny skies expected throughout the week with temperatures reaching 25°C • Traffic Alert: Highway A1 experiencing delays due to construction work between exits 15-18 • Market Update: Stock indices show positive growth with technology sector leading gains • Company Announcement: Q4 results exceed expectations • New product launch scheduled for next month • Employee appreciation event on Friday • Special Offer: 20% discount on all services this week • Limited time promotion • Terms and conditions apply • Contact customer service for details • Welcome to our digital queue management system • Please follow the instructions on screen • For assistance, contact our support team • Thank you for your patience"; static List prayersArray = ["الفجر", "الظهر", "العصر", "المغرب", "العشاء"]; + + static String dummyRssFeedText = + "Latest News: Hospital announces new specialized cardiac unit opening next month • Health Update: Annual flu vaccination campaign starts Monday at all locations • Service Notice: Pharmacy hours extended until 10 PM on weekdays • Patient Advisory: New mobile app available for appointment booking and lab results • Emergency Drill: Fire safety exercise scheduled for 2 PM today • Visitor Information: Updated visiting hours now 8 AM to 8 PM daily • Maintenance Alert: Elevator B will be out of service from 6-8 AM tomorrow • Staff Recognition: Dr. Sarah Ahmed receives excellence award for patient care • Technology Update: New digital check-in kiosks now available in main lobby • Weather Advisory: Heavy rain expected - please allow extra travel time"; + + static String thankYouMessageAr = "نشكر لكم صبركم، ونتمنى لكم دوام الصحة والعافية"; + static String thankYouMessageEn = "Thank you for your patience, we wish you good health and wellness"; } class AppColors { @@ -144,6 +148,7 @@ class AppAssets { static String newVitalSignIcon = "assets/images/vitalsign_icon.svg"; static String newDoctorIcon = "assets/images/doctor_icon.svg"; + static String textBgLeaf = "assets/new_design_icons/text_bg_leaf.svg"; } class AppConstants { diff --git a/lib/models/global_config_model.dart b/lib/models/global_config_model.dart index 5a228a1..6127b01 100644 --- a/lib/models/global_config_model.dart +++ b/lib/models/global_config_model.dart @@ -201,11 +201,11 @@ class GlobalConfigurationsModel { voiceTypeText = json['voiceTypeText']; screenLanguageEnum = (json['screenLanguage'] as int).toLanguageEnum(); screenLanguageText = json['screenLanguageText']; - textDirection = json['textDirection'] == 2 ? TextDirection.rtl : TextDirection.ltr; - // textDirection = TextDirection.rtl; + // textDirection = json['textDirection'] == 2 ? TextDirection.rtl : TextDirection.ltr; + textDirection = TextDirection.rtl; // screenMaxDisplayPatients = json['screenMaxDisplayPatients'] ?? 16; // TODO: Uncomment this screenMaxDisplayPatients - screenMaxDisplayPatients = 16; + screenMaxDisplayPatients = 15; voiceLanguageEnum = (json['voiceLanguage'] as int).toLanguageEnum(); voiceLanguageText = json['voiceLanguageText']; isNotiReq = json['isNotiReq']; @@ -288,7 +288,7 @@ class GlobalConfigurationsModel { vaccinationTextArb = json['vaccinationTextAr'] ?? "غرفة التطعيم"; nebulizationTextArb = json['nebulizationTextAr'] ?? "غرفة البخاخة"; callForVitalSignTextArb = json['callForVitalSignTextAr'] ?? " غرفة استدعاء للعلامات الحيوية"; - callForDoctorTextArb = json['callForDoctorTextAr'] ?? "الرجاء التوّه إلى غرفة الطبيب"; + callForDoctorTextArb = json['callForDoctorTextAr'] ?? "الرجاء التوجّه إلى غرفة الطبيب"; callForProcedureTextArb = json['callForProcedureTextAr'] ?? "الرجاء التوجّه إلى غرفة الإجراء"; callForVaccinationTextArb = json['callForVaccinationTextAr'] ?? "الرجاء لتوجّه إلى غرفة التطعيم"; callForNebulizationTextArb = json['callForNebulizationTextAr'] ?? "الرجاء التوجّه إلى غرفة البخاخة"; diff --git a/lib/models/weathers_widget_model.dart b/lib/models/weathers_widget_model.dart index 312914f..1e75539 100644 --- a/lib/models/weathers_widget_model.dart +++ b/lib/models/weathers_widget_model.dart @@ -34,9 +34,9 @@ class WeathersWidgetModel { WeathersWidgetModel.fromJson(Map json) { id = json['id']; headline = json['headline']; - maxTemp = json['maxTemp']; - minTemp = json['minTemp']; - iconPhrase = json['iconPhrase']; + maxTemp = json['maxTemp'] ?? "42.2"; + minTemp = json['minTemp'] ?? "31.7"; + iconPhrase = json['iconPhrase'] ?? "Mostly sunny"; forecastDate = json['forecastDate']; cityID = json['cityID']; forecastDay = json['forecastDay']; diff --git a/lib/repositories/screen_details_repo.dart b/lib/repositories/screen_details_repo.dart index 29c689a..d61deaa 100644 --- a/lib/repositories/screen_details_repo.dart +++ b/lib/repositories/screen_details_repo.dart @@ -118,6 +118,21 @@ class ScreenDetailsRepoImp implements ScreenDetailsRepo { @override Future getWeatherDetailsByCity({required String cityId}) async { + WeathersWidgetModel constantWeathersWidgetModel = WeathersWidgetModel( + id: 12345, + headline: "Hot and sunny conditions expected", + maxTemp: 42.5, + minTemp: 28.3, + iconPhrase: "Mostly sunny", + forecastDate: "2024-12-19", + cityID: 287, + forecastDay: "Thursday", + createDateTime: "2024-12-19T08:30:00Z", + windSpeed: 12.5, + windDirection: "NW", + windDegrees: 315.0, + weatherIconPath: AppAssets.sunnyIcon, + ); try { final body = {"cityID": cityId}; GenericRespModel genericRespModel = await apiClientInstance.postJsonForObject( @@ -129,15 +144,14 @@ class ScreenDetailsRepoImp implements ScreenDetailsRepo { List weathersWidgetModel = List.generate(genericRespModel.data.length, (index) => WeathersWidgetModel.fromJson(genericRespModel.data[index])); if (weathersWidgetModel.isNotEmpty) { loggerService.logToFile(message: weathersWidgetModel.toString(), source: "getWeatherDetailsByCity-> screen_details_repo.dart", type: LogTypeEnum.data); - return weathersWidgetModel.first; } - return null; + return constantWeathersWidgetModel; } catch (e) { loggerService.logError(e.toString()); loggerService.logToFile(message: e.toString(), source: "getWeatherDetailsByCity-> screen_details_repo.dart", type: LogTypeEnum.error); InfoComponents.showToast(e.toString()); - return null; + return constantWeathersWidgetModel; } } diff --git a/lib/views/common_widgets/app_footer.dart b/lib/views/common_widgets/app_footer.dart index a1590f5..c95e0ae 100644 --- a/lib/views/common_widgets/app_footer.dart +++ b/lib/views/common_widgets/app_footer.dart @@ -3,6 +3,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:hmg_qline/view_models/screen_config_view_model.dart'; import 'package:hmg_qline/views/common_widgets/app_general_widgets.dart'; +import 'package:hmg_qline/views/common_widgets/date_display_widget.dart'; +import 'package:hmg_qline/views/common_widgets/headline_tag_widget.dart'; import 'package:provider/provider.dart'; import 'package:hmg_qline/constants/app_constants.dart'; import 'package:hmg_qline/utilities/enums.dart'; @@ -111,12 +113,12 @@ class _AppFooterState extends State { children: [ AppText( label, - fontSize: SizeConfig.getWidthMultiplier()! * 1.8, + fontSize: SizeConfig.getWidthMultiplier()! * 1.5, fontFamily: isForArabic ? AppStrings.fontNameGesTwo : AppStrings.fontNamePoppins, ), AppText( prayerName, - fontSize: SizeConfig.getWidthMultiplier()! * 2, + fontSize: SizeConfig.getWidthMultiplier()! * 1.8, fontWeight: FontWeight.bold, color: AppColors.darkGreyTextColor, fontFamily: isForArabic ? AppStrings.fontNameGesTwo : AppStrings.fontNamePoppins, @@ -159,6 +161,115 @@ class _AppFooterState extends State { return "0"; } + bool _hasBothPrayerAndWeather(ScreenConfigViewModel screenConfigVM) { + return screenConfigVM.globalConfigurationsModel.isPrayerTimeReq && screenConfigVM.globalConfigurationsModel.isWeatherReq; + } + + bool _isPortraitWithBothFeatures(ScreenConfigViewModel screenConfigVM) { + bool isPortrait = screenConfigVM.globalConfigurationsModel.orientationTypeEnum == ScreenOrientationEnum.portraitUp || + screenConfigVM.globalConfigurationsModel.orientationTypeEnum == ScreenOrientationEnum.portraitDown; + return isPortrait && _hasBothPrayerAndWeather(screenConfigVM); + } + + Widget _buildConnectionStatus(ScreenConfigViewModel screenConfigVM) { + bool isPortrait = screenConfigVM.globalConfigurationsModel.orientationTypeEnum == ScreenOrientationEnum.portraitUp || + screenConfigVM.globalConfigurationsModel.orientationTypeEnum == ScreenOrientationEnum.portraitDown; + + EdgeInsets padding; + if (_isPortraitWithBothFeatures(screenConfigVM)) { + padding = EdgeInsets.only(top: SizeConfig.getHeightMultiplier()! * 0.15); + } else if (isPortrait) { + padding = EdgeInsets.only(top: SizeConfig.getHeightMultiplier()! * 0.3); + } else { + padding = EdgeInsets.only(top: SizeConfig.getHeightMultiplier()! * 0.15); + } + + Widget content; + if (_isPortraitWithBothFeatures(screenConfigVM)) { + content = Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildStatusRow("Hub Status ", screenConfigVM.isHubConnected), + SizedBox(height: SizeConfig.getHeightMultiplier()! * 0.05), + _buildStatusRow("Network Status ", screenConfigVM.isInternetConnected), + ], + ); + } else if (isPortrait) { + content = Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + _buildStatusRow("Hub Status ", screenConfigVM.isHubConnected), + SizedBox(width: SizeConfig.getWidthMultiplier()! * 2), + _buildStatusRow("Network Status ", screenConfigVM.isInternetConnected), + ], + ); + } else { + content = Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildStatusRow("Hub Status ", screenConfigVM.isHubConnected), + SizedBox(height: SizeConfig.getHeightMultiplier()! * 0.05), + _buildStatusRow("Network Status ", screenConfigVM.isInternetConnected), + ], + ); + } + + return Padding(padding: padding, child: content); + } + + Widget buildWeatherIcon(String? weatherIconPath) { + if (weatherIconPath != null) { + return SvgPicture.asset( + weatherIconPath, + height: SizeConfig.getHeightMultiplier() * 0.4, + ); + } + + return const SizedBox.shrink(); + } + + Widget buildCurrentCityTemp(String? currentCity, String? temp, bool isForArabic) { + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + if (temp != null) + AppText( + temp.toString(), + fontSize: SizeConfig.getWidthMultiplier()! * 2, + fontFamily: AppStrings.fontNamePoppins, + fontWeight: FontWeight.bold, + ), + AppText( + currentCity.toString(), + fontSize: SizeConfig.getWidthMultiplier()! * 1.8, + fontFamily: isForArabic ? AppStrings.fontNameGesTwo : AppStrings.fontNamePoppins, + ), + ], + ); + } + + Widget buildTempDetails(String? iconPhrase, double? maxTempText, double? minTempText, bool isForArabic) { + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + SimpleDateDisplay(isForArabic: isForArabic), + if (iconPhrase != null) + AppText( + iconPhrase, + fontSize: SizeConfig.getWidthMultiplier()! * 1.5, + fontFamily: AppStrings.fontNamePoppins, + ), + if (minTempText != null && maxTempText != null) + AppText( + "$minTempText°C / $maxTempText°C", + fontSize: SizeConfig.getWidthMultiplier()! * 1.5, + fontFamily: AppStrings.fontNamePoppins, + fontWeight: FontWeight.bold, + ), + ], + ); + } + @override Widget build(BuildContext context) { return Consumer( @@ -167,159 +278,206 @@ class _AppFooterState extends State { screenConfigVM.globalConfigurationsModel.orientationTypeEnum == ScreenOrientationEnum.portraitDown; return Padding( - padding: EdgeInsets.symmetric( - horizontal: SizeConfig.getWidthMultiplier() * 4, - vertical: SizeConfig.getHeightMultiplier() * 0.14, + padding: EdgeInsets.fromLTRB( + SizeConfig.getWidthMultiplier() * 4, + SizeConfig.getHeightMultiplier() * 0.14, + 0, + SizeConfig.getHeightMultiplier() * 0.05, ), - child: Row( + child: Column( + mainAxisSize: MainAxisSize.min, children: [ - Expanded( - flex: 3, - child: customShadowSmoothContainer( - height: SizeConfig.getHeightMultiplier() * 0.8, - padding: EdgeInsets.symmetric( - horizontal: SizeConfig.getWidthMultiplier() * 3, - vertical: SizeConfig.getHeightMultiplier() * 0.1, - ), - child: Row( - crossAxisAlignment: CrossAxisAlignment.end, - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - Padding( - padding: EdgeInsets.only(top: SizeConfig.getHeightMultiplier()! * 0.1), - child: Column( - mainAxisAlignment: MainAxisAlignment.center, + Padding( + padding: EdgeInsets.only(right: SizeConfig.getWidthMultiplier() * 4), + child: Row( + children: [ + Expanded( + flex: screenConfigVM.globalConfigurationsModel.isWeatherReq && screenConfigVM.globalConfigurationsModel.isPrayerTimeReq ? 2 : 3, + child: customShadowSmoothContainer( + height: SizeConfig.getHeightMultiplier() * 0.8, + padding: EdgeInsets.symmetric( + horizontal: SizeConfig.getWidthMultiplier() * 3, + vertical: SizeConfig.getHeightMultiplier() * 0.1, + ), + child: Row( + crossAxisAlignment: CrossAxisAlignment.end, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.end, children: [ - AppText( - AppStrings.poweredBy, - fontSize: SizeConfig.getWidthMultiplier()! * 1.5, - fontWeight: FontWeight.w400, - color: AppColors.darkGreyTextColor, + Padding( + padding: EdgeInsets.only(top: SizeConfig.getHeightMultiplier()! * 0.1), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + AppText( + AppStrings.poweredBy, + fontSize: SizeConfig.getWidthMultiplier()! * 1.5, + fontWeight: FontWeight.w400, + color: AppColors.darkGreyTextColor, + ), + AppText( + "v${screenConfigVM.currentScreenIP.replaceAll(".", "").replaceAll("0", "-")}(${AppConstants.currentBuildVersion})", + fontSize: SizeConfig.getWidthMultiplier()! * 1, + fontWeight: FontWeight.w400, + color: AppColors.darkGreyTextColor, + ), + ], + ), ), - AppText( - "v${screenConfigVM.currentScreenIP.replaceAll(".", "").replaceAll("0", "-")}(${AppConstants.currentBuildVersion})", - fontSize: SizeConfig.getWidthMultiplier()! * 1, - fontWeight: FontWeight.w400, - color: AppColors.darkGreyTextColor, + SizedBox(width: SizeConfig.getWidthMultiplier()!), + Padding( + padding: EdgeInsets.only(bottom: SizeConfig.getHeightMultiplier()! * 0.06), + child: Image.asset( + AppAssets.cloudLogo, + height: isPortrait ? SizeConfig.getHeightMultiplier()! * 0.6 : SizeConfig.getHeightMultiplier()! * 0.4, + ), ), ], ), - ), - SizedBox(width: SizeConfig.getWidthMultiplier()!), - Padding( - padding: EdgeInsets.only(bottom: SizeConfig.getHeightMultiplier()! * 0.06), - child: Image.asset( - AppAssets.cloudLogo, - height: isPortrait ? SizeConfig.getHeightMultiplier()! * 0.6 : SizeConfig.getHeightMultiplier()! * 0.4, + _buildConnectionStatus(screenConfigVM), + ], + ), + ), + ), + if (screenConfigVM.globalConfigurationsModel.isPrayerTimeReq) ...[ + SizedBox(width: SizeConfig.getWidthMultiplier()! * 1.7), + Directionality( + textDirection: screenConfigVM.globalConfigurationsModel.textDirection, + child: Expanded( + flex: 2, + child: customShadowSmoothContainer( + height: SizeConfig.getHeightMultiplier() * 0.8, + padding: EdgeInsets.symmetric( + horizontal: isPortrait ? SizeConfig.getWidthMultiplier() * 2.5 : SizeConfig.getWidthMultiplier() * 1.3, + vertical: SizeConfig.getHeightMultiplier() * 0.1, + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + if (isPortrait) ...[ + SvgPicture.asset( + AppAssets.salahTimeIcon, + height: SizeConfig.getHeightMultiplier() * 0.4, + ), + ], + Row( + children: [ + if (screenConfigVM.nextPrayerToShowEng.isNotEmpty) ...[ + _buildPrayerColumn(screenConfigVM.globalConfigurationsModel.nextPrayerTextEng, "${screenConfigVM.nextPrayerToShowEng} "), + ], + if (screenConfigVM.nextPrayerToShowEng.isNotEmpty && screenConfigVM.nextPrayerToShowArb.isNotEmpty) ...[ + Padding( + padding: EdgeInsets.fromLTRB( + SizeConfig.getWidthMultiplier()! * 0.1, + SizeConfig.getHeightMultiplier()! * 0.18, + SizeConfig.getWidthMultiplier()! * 0.1, + 0, + ), + child: AppText("|", fontSize: SizeConfig.getWidthMultiplier()! * 1.8, color: AppColors.darkGreyTextColor), + ), + ], + if (screenConfigVM.nextPrayerToShowArb.isNotEmpty) ...[ + _buildPrayerColumn(screenConfigVM.globalConfigurationsModel.nextPrayerTextArb, screenConfigVM.nextPrayerToShowArb, isForArabic: true), + ], + ], + ), + SizedBox( + width: SizeConfig.getWidthMultiplier() * 14, + child: Center( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SizedBox(height: SizeConfig.getHeightMultiplier()! * 0.05), + Padding( + padding: EdgeInsets.only(left: SizeConfig.getWidthMultiplier()! * 0.5), + child: AppText( + _isMoreThanOneHour(_remainingTime) ? AppStrings.namazTimeText : AppStrings.timeRemainingText, + fontSize: SizeConfig.getWidthMultiplier()! * 1.5, + fontFamily: AppStrings.fontNamePoppins, + ), + ), + _isMoreThanOneHour(_remainingTime) + ? AppText( + screenConfigVM.nextPrayerTime, + fontSize: SizeConfig.getWidthMultiplier()! * 2.5, + fontWeight: FontWeight.bold, + color: AppColors.newRedColor, + letterSpacing: 1.5, + ) + : AppText( + _remainingTime, + fontSize: SizeConfig.getWidthMultiplier()! * 2.5, + fontWeight: FontWeight.bold, + color: AppColors.newRedColor, + letterSpacing: 1.5, + ), + ], + ), + ), + ), + ], ), ), - ], + ), ), - Padding( - padding: isPortrait ? EdgeInsets.only(top: SizeConfig.getHeightMultiplier()! * 0.3) : EdgeInsets.only(top: SizeConfig.getHeightMultiplier()! * 0.15), - child: isPortrait - ? Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + ], + if (screenConfigVM.globalConfigurationsModel.isWeatherReq && + (screenConfigVM.globalConfigurationsModel.orientationTypeEnum != ScreenOrientationEnum.landscapeLeft && + screenConfigVM.globalConfigurationsModel.orientationTypeEnum != ScreenOrientationEnum.landscapeRight)) ...[ + SizedBox(width: SizeConfig.getWidthMultiplier()! * 1.7), + Expanded( + flex: isPortrait ? 3 : 4, + child: customShadowSmoothContainer( + height: SizeConfig.getHeightMultiplier() * 0.8, + padding: EdgeInsets.symmetric( + horizontal: isPortrait ? SizeConfig.getWidthMultiplier() * 3 : SizeConfig.getWidthMultiplier() * 1.5, + vertical: SizeConfig.getHeightMultiplier() * 0.1, + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( children: [ - _buildStatusRow("Hub Status ", screenConfigVM.isHubConnected), - SizedBox(width: SizeConfig.getWidthMultiplier()! * 2), - _buildStatusRow("Network Status ", screenConfigVM.isInternetConnected), + buildWeatherIcon(screenConfigVM.weathersWidgetModel.weatherIconPath ?? AppAssets.weatherIcon), + SizedBox(width: SizeConfig.getWidthMultiplier() * 1.2), + buildCurrentCityTemp("الرياض", "21 °C", true), + SizedBox(width: SizeConfig.getWidthMultiplier() * 1.2), + buildTempDetails(screenConfigVM.weathersWidgetModel.iconPhrase, screenConfigVM.weathersWidgetModel.maxTemp, screenConfigVM.weathersWidgetModel.minTemp, true), ], - ) - : Column( - crossAxisAlignment: CrossAxisAlignment.start, + ), + Row( children: [ - _buildStatusRow("Hub Status ", screenConfigVM.isHubConnected), - SizedBox(height: SizeConfig.getHeightMultiplier()! * 0.05), - _buildStatusRow("Network Status ", screenConfigVM.isInternetConnected), + buildCurrentCityTemp("Riyadh", "21 °C", false), + SizedBox(width: SizeConfig.getWidthMultiplier() * 1.2), + buildTempDetails(screenConfigVM.weathersWidgetModel.iconPhrase, screenConfigVM.weathersWidgetModel.maxTemp, screenConfigVM.weathersWidgetModel.minTemp, false), + SizedBox(width: SizeConfig.getWidthMultiplier() * 1.2), + buildWeatherIcon(screenConfigVM.weathersWidgetModel.weatherIconPath ?? AppAssets.weatherIcon), ], ), + ], + ), + ), ), ], - ), + ], ), ), - if (screenConfigVM.globalConfigurationsModel.isPrayerTimeReq) ...[ - SizedBox(width: SizeConfig.getWidthMultiplier()! * 1.7), - Directionality( - textDirection: screenConfigVM.globalConfigurationsModel.textDirection, - child: Expanded( - flex: isPortrait ? 2 : 3, - child: customShadowSmoothContainer( - height: SizeConfig.getHeightMultiplier() * 0.8, - padding: EdgeInsets.symmetric( - horizontal: isPortrait ? SizeConfig.getWidthMultiplier() * 3 : SizeConfig.getWidthMultiplier() * 1.5, - vertical: SizeConfig.getHeightMultiplier() * 0.1, - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - SizedBox( - width: SizeConfig.getWidthMultiplier() * 15, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - SizedBox(height: SizeConfig.getHeightMultiplier()! * 0.05), - Padding( - padding: EdgeInsets.only(left: SizeConfig.getWidthMultiplier()! * 0.5), - child: AppText( - _isMoreThanOneHour(_remainingTime) ? AppStrings.namazTimeText : AppStrings.timeRemainingText, - fontSize: SizeConfig.getWidthMultiplier()! * 1.5, - fontFamily: AppStrings.fontNamePoppins, - ), - ), - _isMoreThanOneHour(_remainingTime) - ? AppText( - screenConfigVM.nextPrayerTime, - fontSize: SizeConfig.getWidthMultiplier()! * 3, - fontWeight: FontWeight.bold, - color: AppColors.newRedColor, - letterSpacing: 1.5, - ) - : AppText( - _remainingTime, - fontSize: SizeConfig.getWidthMultiplier()! * 3, - fontWeight: FontWeight.bold, - color: AppColors.newRedColor, - letterSpacing: 1.5, - ), - ], - ), - ), - Row( - children: [ - if (screenConfigVM.nextPrayerToShowEng.isNotEmpty) ...[ - _buildPrayerColumn(screenConfigVM.globalConfigurationsModel.nextPrayerTextEng, "${screenConfigVM.nextPrayerToShowEng} "), - ], - if (screenConfigVM.nextPrayerToShowEng.isNotEmpty && screenConfigVM.nextPrayerToShowArb.isNotEmpty) ...[ - Padding( - padding: EdgeInsets.fromLTRB( - SizeConfig.getWidthMultiplier()! * 0.1, - SizeConfig.getHeightMultiplier()! * 0.18, - SizeConfig.getWidthMultiplier()! * 0.1, - 0, - ), - child: AppText("|", fontSize: SizeConfig.getWidthMultiplier()! * 1.8, color: AppColors.darkGreyTextColor), - ), - ], - if (screenConfigVM.nextPrayerToShowArb.isNotEmpty) ...[ - _buildPrayerColumn(screenConfigVM.globalConfigurationsModel.nextPrayerTextArb, screenConfigVM.nextPrayerToShowArb, isForArabic: true), - ], - ], - ), - if (isPortrait) ...[ - SvgPicture.asset( - AppAssets.salahTimeIcon, - height: SizeConfig.getHeightMultiplier() * 0.5, - ), - ], - ], - ), - ), + SizedBox(height: SizeConfig.getHeightMultiplier()! * 0.1), + if (screenConfigVM.globalConfigurationsModel.isRssFeedReq && (screenConfigVM.rssFeedModel.rssFeed != null && screenConfigVM.rssFeedModel.rssFeed!.isNotEmpty)) ...[ + // if (true)...[ + customShadowSmoothContainer( + removeRightBorder: true, + height: SizeConfig.getHeightMultiplier()! * 0.3, + width: double.infinity, + child: Row( + children: [ + const HmgNewsWidget(tagTitle: "HMG News"), + rssFeedWidget(), + // customShadowSmoothContainer(child: rssFeedWidget()), + ], ), ), ], diff --git a/lib/views/common_widgets/app_general_widgets.dart b/lib/views/common_widgets/app_general_widgets.dart index 9f47ce5..75976e3 100644 --- a/lib/views/common_widgets/app_general_widgets.dart +++ b/lib/views/common_widgets/app_general_widgets.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:hmg_qline/constants/app_constants.dart'; import 'package:hmg_qline/utilities/enums.dart'; -import 'package:hmg_qline/utilities/extensions.dart'; import 'package:hmg_qline/view_models/screen_config_view_model.dart'; import 'package:hmg_qline/views/common_widgets/app_texts_widget.dart'; import 'package:hmg_qline/views/view_helpers/size_config.dart'; @@ -281,9 +280,11 @@ Widget engArabicTextWithSeparatorWidget({ mainAxisAlignment: mainAxisAlignment ?? MainAxisAlignment.start, children: [ AppText( - englishText, - fontSize: fontSize ?? SizeConfig.getWidthMultiplier() * 2.6, + arabicText, color: color ?? AppColors.darkGreyTextColor, + fontSize: fontSize ?? SizeConfig.getWidthMultiplier() * 2.6, + fontFamily: AppStrings.fontNameGesTwo, + fontWeight: FontWeight.bold, ), AppText( " | ", @@ -291,22 +292,109 @@ Widget engArabicTextWithSeparatorWidget({ color: color ?? AppColors.darkGreyTextColor, ), AppText( - arabicText, - color: color ?? AppColors.darkGreyTextColor, + englishText, fontSize: fontSize ?? SizeConfig.getWidthMultiplier() * 2.6, - fontFamily: AppStrings.fontNameGesTwo, - fontWeight: FontWeight.bold, + color: color ?? AppColors.darkGreyTextColor, ), ], ); } + +Widget buildTextContainer(bool isForArabic) { + return Container( + padding: EdgeInsets.all(SizeConfig.getHeightMultiplier() * 0.2), + child: Stack( + children: [ + Positioned( + top: 0, + right: SizeConfig.getWidthMultiplier() * 2, + child: SvgPicture.asset( + AppAssets.textBgLeaf, + height: SizeConfig.getHeightMultiplier() * 0.4, + ), + ), + Padding( + padding: const EdgeInsets.only(top: 15), + child: AppText( + textAlign: TextAlign.center, + AppStrings.thankYouMessageAr, + fontSize: SizeConfig.getWidthMultiplier() * 3.6, + color: AppColors.darkGreyTextColor, + fontFamily: AppStrings.fontNameGesTwo, + ), + ), + ], + ), + ); +} + +Widget showThankyouWidget() { + return Expanded( + flex: 4, + child: Padding( + padding: EdgeInsets.all(SizeConfig.getHeightMultiplier() * 0.2), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Stack( + children: [ + Positioned( + top: 0, + right: SizeConfig.getWidthMultiplier() * 2, + child: SvgPicture.asset( + AppAssets.textBgLeaf, + height: SizeConfig.getHeightMultiplier() * 0.4, + ), + ), + Padding( + padding: EdgeInsets.only(top: SizeConfig.getHeightMultiplier() * 0.1, right: SizeConfig.getWidthMultiplier() * 1), + child: AppText( + textAlign: TextAlign.center, + AppStrings.thankYouMessageAr, + fontSize: SizeConfig.getWidthMultiplier() * 3.6, + color: AppColors.darkGreyTextColor, + fontFamily: AppStrings.fontNameGesTwo, + ), + ), + ], + ), + SizedBox(height: SizeConfig.getHeightMultiplier() * 0.3), + Stack( + children: [ + Positioned( + top: 0, + left: SizeConfig.getWidthMultiplier() * 3, + child: SvgPicture.asset( + AppAssets.textBgLeaf, + height: SizeConfig.getHeightMultiplier() * 0.4, + ), + ), + Padding( + padding: EdgeInsets.only(top: SizeConfig.getHeightMultiplier() * 0.1, left: SizeConfig.getWidthMultiplier() * 1.5), + child: AppText( + textAlign: TextAlign.center, + AppStrings.thankYouMessageEn, + fontSize: SizeConfig.getWidthMultiplier() * 3.6, + color: AppColors.darkGreyTextColor, + fontFamily: AppStrings.fontNamePoppins, + ), + ), + ], + ), + ], + ), + ), + ); +} + Widget customShadowSmoothContainer({ EdgeInsetsGeometry? padding, EdgeInsetsGeometry? margin, required Widget child, double? height, double? width, + bool removeRightBorder = false, }) { return Container( padding: padding, @@ -316,7 +404,14 @@ Widget customShadowSmoothContainer({ alignment: Alignment.center, decoration: BoxDecoration( color: AppColors.whiteColor, - borderRadius: BorderRadius.circular(SizeConfig.widthMultiplier! * 1.2), + borderRadius: removeRightBorder + ? BorderRadius.only( + topLeft: Radius.circular(SizeConfig.widthMultiplier! * 1.2), // Apply radius to top-left + bottomLeft: Radius.circular(SizeConfig.widthMultiplier! * 1.2), // Apply radius to bottom-left + topRight: Radius.zero, // Keep top-right corner sharp + bottomRight: Radius.zero, // Keep bottom-right corner sharp + ) + : BorderRadius.circular(SizeConfig.widthMultiplier! * 1.2), boxShadow: [ BoxShadow( color: AppColors.smoothContainerShadow, @@ -402,28 +497,26 @@ Widget customShadowSmoothContainerWithBackground({ ); } -Widget rssFeedWidget({required String feed}) { +Widget rssFeedWidget({String? feed}) { + String feedToShow = feed ?? AppStrings.dummyRssFeedText; return Expanded( - child: Container( - padding: const EdgeInsets.fromLTRB(10, 30, 10, 0), - child: Marquee( - text: feed, - style: TextStyle( - fontWeight: FontWeight.w400, - fontSize: SizeConfig.getWidthMultiplier() * 2, - fontFamily: AppStrings.fontNamePoppins, - ), - scrollAxis: Axis.horizontal, - crossAxisAlignment: CrossAxisAlignment.center, - blankSpace: 20.0, - velocity: 100.0, - pauseAfterRound: const Duration(seconds: 1), - startPadding: 10.0, - accelerationDuration: const Duration(seconds: 1), - accelerationCurve: Curves.linear, - decelerationDuration: const Duration(milliseconds: 500), - decelerationCurve: Curves.easeOut, + child: Marquee( + text: feedToShow, + style: TextStyle( + fontWeight: FontWeight.w400, + fontSize: SizeConfig.getWidthMultiplier() * 2, + fontFamily: AppStrings.fontNamePoppins, ), + scrollAxis: Axis.horizontal, + crossAxisAlignment: CrossAxisAlignment.center, + blankSpace: 20.0, + velocity: 100.0, + pauseAfterRound: const Duration(seconds: 1), + startPadding: 10.0, + accelerationDuration: const Duration(seconds: 1), + accelerationCurve: Curves.linear, + decelerationDuration: const Duration(milliseconds: 500), + decelerationCurve: Curves.easeOut, ), ); } @@ -438,7 +531,7 @@ Widget callTypeContainer({ required TextDirection textDirection, bool isDisableRightBorderRadius = true, }) { - final border = SizeConfig.getWidthMultiplier()! * 1; + final border = SizeConfig.getWidthMultiplier()! * 0.7; return Container( padding: padding, margin: margin, @@ -448,7 +541,7 @@ Widget callTypeContainer({ decoration: BoxDecoration( color: color, borderRadius: isDisableRightBorderRadius - ? textDirection == TextDirection.ltr + ? textDirection == TextDirection.rtl ? BorderRadius.only( topLeft: Radius.circular(border), bottomLeft: Radius.circular(border), diff --git a/lib/views/common_widgets/app_header.dart b/lib/views/common_widgets/app_header.dart index 9470370..7746741 100644 --- a/lib/views/common_widgets/app_header.dart +++ b/lib/views/common_widgets/app_header.dart @@ -24,24 +24,28 @@ class AppHeader extends StatelessWidget implements PreferredSizeWidget { textDirection: globalConfigurationsModel.textDirection, child: Padding( padding: EdgeInsets.symmetric(horizontal: SizeConfig.getWidthMultiplier() * 4), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, children: [ Row( - mainAxisAlignment: MainAxisAlignment.end, + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - SvgPicture.asset( - globalConfigurationsModel.qTypeEnum == QTypeEnum.appointment ? AppAssets.hmgLogoFull : AppAssets.hmgLogoPharmacy, - height: SizeConfig.getHeightMultiplier() * 0.48, + engArabicTextWithSeparatorWidget( + englishText: globalConfigurationsModel.currentServeTextEng ?? "", + arabicText: globalConfigurationsModel.currentServeTextArb ?? "", ), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + SvgPicture.asset( + globalConfigurationsModel.qTypeEnum == QTypeEnum.appointment ? AppAssets.hmgLogoFull : AppAssets.hmgLogoPharmacy, + height: SizeConfig.getHeightMultiplier() * 0.48, + ), + ], + ), + // networkStatusBar(), ], ), - engArabicTextWithSeparatorWidget( - englishText: globalConfigurationsModel.currentServeTextEng ?? "", - arabicText: globalConfigurationsModel.currentServeTextArb ?? "", - ), - - // networkStatusBar(), ], ), ), diff --git a/lib/views/common_widgets/date_display_widget.dart b/lib/views/common_widgets/date_display_widget.dart new file mode 100644 index 0000000..0bfe512 --- /dev/null +++ b/lib/views/common_widgets/date_display_widget.dart @@ -0,0 +1,59 @@ +import 'package:flutter/material.dart'; + +class SimpleDateDisplay extends StatelessWidget { + final bool isForArabic; + + SimpleDateDisplay({super.key, required this.isForArabic}); + + final List _englishWeekdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']; + + final List _englishMonths = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; + + // Note: For Arabic, the full month names are commonly used in this context. + final List _arabicWeekdays = ['الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت', 'الأحد']; + + final List _arabicMonths = ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر']; + + String _toArabicDigits(int number) { + const Map arabicDigits = { + '0': '٠', + '1': '١', + '2': '٢', + '3': '٣', + '4': '٤', + '5': '٥', + '6': '٦', + '7': '٧', + '8': '٨', + '9': '٩', + }; + return number.toString().split('').map((char) => arabicDigits[char] ?? char).join(); + } + + @override + Widget build(BuildContext context) { + final DateTime now = DateTime.now(); + + // English formatting + final String englishDayOfWeek = _englishWeekdays[now.weekday - 1]; + final String englishMonthAbbr = _englishMonths[now.month - 1]; + final String englishDateString = '$englishDayOfWeek | ${now.day} $englishMonthAbbr'; + + // Arabic formatting + final String arabicDayOfWeek = _arabicWeekdays[now.weekday - 1]; + final String arabicDayDigits = _toArabicDigits(now.day); + final String arabicMonthName = _arabicMonths[now.month - 1]; + final String arabicDateString = '$arabicDayOfWeek | $arabicDayDigits $arabicMonthName'; + + return isForArabic // Use widget.isForArabic to access the property + ? Text( + arabicDateString, + style: const TextStyle(fontSize: 24, fontWeight: FontWeight.bold), + textDirection: TextDirection.rtl, // Crucial for Arabic text + ) + : Text( + englishDateString, + style: const TextStyle(fontSize: 24, fontWeight: FontWeight.bold), + ); + } +} diff --git a/lib/views/common_widgets/headline_tag_widget.dart b/lib/views/common_widgets/headline_tag_widget.dart new file mode 100644 index 0000000..130c787 --- /dev/null +++ b/lib/views/common_widgets/headline_tag_widget.dart @@ -0,0 +1,99 @@ +import 'package:flutter/material.dart'; +import 'package:hmg_qline/constants/app_constants.dart'; +import 'package:hmg_qline/views/common_widgets/app_texts_widget.dart'; +import 'package:hmg_qline/views/view_helpers/size_config.dart'; + +class HmgNewsWidget extends StatelessWidget { + final String tagTitle; + + const HmgNewsWidget({super.key, required this.tagTitle}); + + @override + Widget build(BuildContext context) { + return CustomPaint( + painter: ArrowShapePainter( + fillColor: AppColors.redColor, + arrowWidth: 20.0, + arrowHeight: 20.0, + topLeftRadius: const Radius.circular(10), + bottomLeftRadius: const Radius.circular(10), + topRightRadius: const Radius.circular(8), + bottomRightRadius: const Radius.circular(8), + ), + child: Container( + color: Colors.transparent, + alignment: Alignment.center, + padding: const EdgeInsets.fromLTRB(20, 8, 35, 8), + child: AppText( + tagTitle, + color: AppColors.whiteColor, + fontWeight: FontWeight.bold, + fontSize: SizeConfig.getWidthMultiplier() * 1.5, + ), + ), + ); + } +} + +class ArrowShapePainter extends CustomPainter { + final Color fillColor; + final Radius topLeftRadius; + final Radius topRightRadius; + final Radius bottomLeftRadius; + final Radius bottomRightRadius; + final double arrowWidth; + final double arrowHeight; + + ArrowShapePainter({ + required this.fillColor, + this.topLeftRadius = Radius.zero, // Default to no rounding + this.topRightRadius = Radius.zero, + this.bottomLeftRadius = Radius.zero, + this.bottomRightRadius = Radius.zero, + this.arrowWidth = 20.0, + this.arrowHeight = 20.0, + }); + + @override + void paint(Canvas canvas, Size size) { + final paint = Paint() + ..color = fillColor + ..style = PaintingStyle.fill; + + final path = Path(); + + // Main rounded rectangle body with customizable corners + path.addRRect(RRect.fromLTRBAndCorners( + 0, + 0, + size.width - arrowWidth, // Adjust width for the arrow + size.height, + topLeft: topLeftRadius, + topRight: topRightRadius, + bottomLeft: bottomLeftRadius, + bottomRight: bottomRightRadius, + )); + + // Arrow part remains the same + path.moveTo(size.width - arrowWidth, (size.height / 2) - (arrowHeight / 2)); + path.lineTo(size.width, size.height / 2); + path.lineTo(size.width - arrowWidth, (size.height / 2) + (arrowHeight / 2)); + path.close(); + + canvas.drawPath(path, paint); + } + + @override + bool shouldRepaint(covariant CustomPainter oldDelegate) { + if (oldDelegate is ArrowShapePainter) { + return oldDelegate.fillColor != fillColor || + oldDelegate.topLeftRadius != topLeftRadius || + oldDelegate.topRightRadius != topRightRadius || + oldDelegate.bottomLeftRadius != bottomLeftRadius || + oldDelegate.bottomRightRadius != bottomRightRadius || + oldDelegate.arrowWidth != arrowWidth || + oldDelegate.arrowHeight != arrowHeight; + } + return true; + } +} diff --git a/lib/views/main_queue_screen/components/priority_tickets.dart b/lib/views/main_queue_screen/components/priority_tickets.dart index 7caa641..2eef8e4 100644 --- a/lib/views/main_queue_screen/components/priority_tickets.dart +++ b/lib/views/main_queue_screen/components/priority_tickets.dart @@ -12,11 +12,7 @@ class PriorityTickets extends StatelessWidget { final List tickets; final GlobalConfigurationsModel globalConfigurationsModel; - const PriorityTickets({ - required this.tickets, - required this.globalConfigurationsModel, - super.key, - }); + const PriorityTickets({required this.tickets, required this.globalConfigurationsModel, super.key}); @override Widget build(BuildContext context) { @@ -26,12 +22,13 @@ class PriorityTickets extends StatelessWidget { child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, children: _buildTicketLayout(context), ), ); } - Widget _buildAnimatedOtherTicketsRow(BuildContext context, {required int noOfTicketsToSkipFromStart, bool isHalf = false}) { + Widget _buildOtherTicketsRow(BuildContext context, {required int noOfTicketsToSkipFromStart, bool isHalf = false}) { final otherTickets = tickets.length > 2 ? tickets.sublist(noOfTicketsToSkipFromStart) : []; if (otherTickets.isEmpty) return const SizedBox.shrink(); @@ -57,39 +54,40 @@ class PriorityTickets extends StatelessWidget { switch (tickets.length) { case 1: return [_buildPrimaryTicket(context, tickets[0], isFullWidth: true)]; - case 2: return [ - _buildPrimaryTicket(context, tickets[0], isHalf: true), - _buildCurrentServeText(), - _buildSecondaryTicket(context, tickets[1], isHalf: true), + Expanded(child: _buildPrimaryTicket(context, tickets[0], isHalf: true)), + SizedBox(height: SizeConfig.getHeightMultiplier()! * 0.5), + Expanded(child: _buildSecondaryTicket(context, tickets[1], isHalf: true)), ]; - case 3: case 4: return [ - _buildPrimaryTicket(context, tickets[0], isHalf: true), - _buildCurrentServeText(), - _buildAnimatedOtherTicketsRow(context, noOfTicketsToSkipFromStart: 1, isHalf: true), + Expanded(child: _buildPrimaryTicket(context, tickets[0], isHalf: true)), + SizedBox(height: SizeConfig.getHeightMultiplier()! * 0.5), + Expanded(child: _buildOtherTicketsRow(context, noOfTicketsToSkipFromStart: 1, isHalf: true)), ]; default: return [ - Row( - children: [ - Expanded( - flex: 2, - child: _buildPrimaryTicket(context, tickets[0]), - ), - _buildSpacing(), - Expanded( - flex: 1, - child: _buildSecondaryTicket(context, tickets[1]), - ), - ], + Expanded( + child: Row( + children: [ + Expanded( + flex: 2, + child: _buildPrimaryTicket(context, tickets[0]), + ), + SizedBox(width: SizeConfig.getWidthMultiplier() * 2), + Expanded( + flex: 1, + child: _buildSecondaryTicket(context, tickets[1]), + ), + ], + ), ), - _buildCurrentServeText(), - _buildAnimatedOtherTicketsRow(context, noOfTicketsToSkipFromStart: 2), + // _buildCurrentServeText(), + SizedBox(height: SizeConfig.getHeightMultiplier()! * 0.15), + Expanded(child: _buildOtherTicketsRow(context, noOfTicketsToSkipFromStart: 2)), ]; } } @@ -146,7 +144,7 @@ class PriorityTickets extends StatelessWidget { return primaryCallingCard; } - Widget _buildSecondaryTicket(BuildContext context, TicketDetailsModel ticket, {bool isHalf = false}) { + Widget _buildSecondaryTicket(BuildContext context, TicketDetailsModel ticket, {EdgeInsets? margin, bool isHalf = false}) { Widget secondaryCallingCard = QueueItemNormalCard( ticketNo: ticket.ticketModel?.queueNo ?? '', roomNo: ticket.ticketModel?.roomNo ?? '', @@ -186,10 +184,6 @@ class PriorityTickets extends StatelessWidget { ); } - Widget _buildSpacing() { - return SizedBox(width: SizeConfig.getWidthMultiplier() * 2); - } - // Helper methods to reduce repetition double _getTicketScale() { return globalConfigurationsModel.screenTypeEnum == ScreenTypeEnum.roomLevelScreen ? 2.0 : 1.2; diff --git a/lib/views/main_queue_screen/components/priority_tickets_sidelist.dart b/lib/views/main_queue_screen/components/priority_tickets_sidelist.dart index c3777da..c7fbc91 100644 --- a/lib/views/main_queue_screen/components/priority_tickets_sidelist.dart +++ b/lib/views/main_queue_screen/components/priority_tickets_sidelist.dart @@ -1,4 +1,7 @@ +import 'dart:developer'; + import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; import 'package:hmg_qline/constants/app_constants.dart'; import 'package:hmg_qline/models/global_config_model.dart'; import 'package:hmg_qline/models/ticket_model.dart'; @@ -9,16 +12,18 @@ import 'package:hmg_qline/views/common_widgets/app_texts_widget.dart'; import 'package:hmg_qline/views/main_queue_screen/components/priority_tickets.dart'; import 'package:hmg_qline/views/view_helpers/size_config.dart'; -class PriorityTicketsWithSidelist extends StatelessWidget { +class PriorityTicketsWithSideSection extends StatelessWidget { final List tickets; final GlobalConfigurationsModel globalConfigurationsModel; final ScreenOrientationEnum screenOrientationEnum; + final bool showThankyouMessage; - const PriorityTicketsWithSidelist({ + const PriorityTicketsWithSideSection({ super.key, required this.tickets, required this.globalConfigurationsModel, required this.screenOrientationEnum, + required this.showThankyouMessage, }); Widget ticketListItem({required TicketData? ticketModel}) { @@ -37,7 +42,7 @@ class PriorityTicketsWithSidelist extends StatelessWidget { ticketModel!.queueNo ?? "", fontWeight: FontWeight.w500, color: AppColors.greyTextColor, - fontSize: SizeConfig.getWidthMultiplier() * 2, + fontSize: SizeConfig.getWidthMultiplier() * 1.8, textAlign: TextAlign.center, fontFamily: AppStrings.fontNamePoppins, ), @@ -65,22 +70,30 @@ class PriorityTicketsWithSidelist extends StatelessWidget { child: Row( mainAxisAlignment: MainAxisAlignment.start, children: [ - AppText( - callMessageAr, - color: ticketModel.callTypeEnum.getColorByCallType(), - fontSize: SizeConfig.getWidthMultiplier() * 2, - fontWeight: FontWeight.bold, - fontFamily: AppStrings.fontNameGesTwo, - fontHeight: 1, + Expanded( + flex: 3, + child: AppText( + callMessageAr, + color: ticketModel.callTypeEnum.getColorByCallType(), + fontSize: SizeConfig.getWidthMultiplier() * 1.8, + fontWeight: FontWeight.bold, + fontFamily: AppStrings.fontNameGesTwo, + fontHeight: 1, + textOverflow: TextOverflow.clip, + maxLines: 1, + ), ), SizedBox(width: SizeConfig.getWidthMultiplier()), if (callMessageEng.isNotEmpty) ...[ - AppText( - "($callMessageEng)", - color: ticketModel.callTypeEnum.getColorByCallType(), - fontSize: SizeConfig.getWidthMultiplier() * 2, - fontFamily: AppStrings.fontNamePoppins, - fontHeight: 1, + Expanded( + flex: 2, + child: AppText( + "($callMessageEng)", + color: ticketModel.callTypeEnum.getColorByCallType(), + fontSize: SizeConfig.getWidthMultiplier() * 1.8, + fontFamily: AppStrings.fontNamePoppins, + fontHeight: 1, + ), ), ] ], @@ -98,8 +111,11 @@ class PriorityTicketsWithSidelist extends StatelessWidget { ticketModel.roomNo ?? "", fontWeight: FontWeight.w500, color: AppColors.greyTextColor, - fontSize: SizeConfig.getWidthMultiplier() * 2, + fontSize: SizeConfig.getWidthMultiplier() * 1.8, fontFamily: globalConfigurationsModel.screenLanguageEnum == LanguageEnum.arabic ? AppStrings.fontNameCairo : AppStrings.fontNamePoppins, + maxLines: 1, + textOverflow: TextOverflow.clip, + textDirection: globalConfigurationsModel.textDirection, ), ), ) @@ -108,88 +124,112 @@ class PriorityTicketsWithSidelist extends StatelessWidget { ); } + + @override Widget build(BuildContext context) { - final priorityTickets = tickets.sublist(0, AppConstants.thresholdForListUI); - final otherTickets = tickets.sublist(AppConstants.thresholdForListUI, tickets.length); + List priorityTickets = []; + List otherTickets = []; + + log("tickets : ${tickets.length}"); + log("priorityTickets : ${priorityTickets.length}"); + log("otherTickets : ${otherTickets.length}"); + + if (tickets.length > AppConstants.thresholdForListUI) { + priorityTickets = tickets.sublist(0, AppConstants.thresholdForListUI); + otherTickets = tickets.sublist(AppConstants.thresholdForListUI, tickets.length); + } else { + priorityTickets = tickets; + } final List children = [ Expanded(flex: 5, child: PriorityTickets(globalConfigurationsModel: globalConfigurationsModel, tickets: priorityTickets)), if (screenOrientationEnum == ScreenOrientationEnum.portraitUp || screenOrientationEnum == ScreenOrientationEnum.portraitDown) ...[ SizedBox(width: SizeConfig.getWidthMultiplier() * 2), ], - Expanded( - flex: 5, - child: customShadowSmoothContainer( - child: Column( - children: [ - Directionality( - textDirection: globalConfigurationsModel.textDirection, - child: Padding( - padding: EdgeInsets.symmetric( - vertical: SizeConfig.getHeightMultiplier()! * 0.12, - horizontal: SizeConfig.getWidthMultiplier()! * 2, - ), - child: Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Expanded( - flex: 3, - child: engArabicTextWithSeparatorWidget( - englishText: globalConfigurationsModel.queueNoTextEng ?? "", - arabicText: globalConfigurationsModel.queueNoTextArb ?? "", - fontSize: SizeConfig.getWidthMultiplier()! * 2.2, - mainAxisAlignment: MainAxisAlignment.start, - ), - ), - if (globalConfigurationsModel.qTypeEnum == QTypeEnum.appointment) ...[ + if (screenOrientationEnum == ScreenOrientationEnum.landscapeLeft || screenOrientationEnum == ScreenOrientationEnum.landscapeRight) ...[ + SizedBox(height: SizeConfig.getHeightMultiplier() * 0.2), + ], + if (showThankyouMessage) ...[ + showThankyouWidget(), + ] else ...[ + Expanded( + flex: !globalConfigurationsModel.isRssFeedReq && (screenOrientationEnum == ScreenOrientationEnum.landscapeLeft || screenOrientationEnum == ScreenOrientationEnum.landscapeRight) ? 6 : 4, + // flex: !globalConfigurationsModel.isRssFeedReq && (screenOrientationEnum == ScreenOrientationEnum.landscapeLeft || screenOrientationEnum == ScreenOrientationEnum.landscapeRight) ? 6 : 4, + child: customShadowSmoothContainer( + child: Column( + children: [ + Directionality( + textDirection: globalConfigurationsModel.textDirection, + child: Padding( + padding: EdgeInsets.symmetric( + vertical: SizeConfig.getHeightMultiplier()! * 0.12, + horizontal: SizeConfig.getWidthMultiplier()! * 2, + ), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ Expanded( - flex: 5, + flex: 3, child: engArabicTextWithSeparatorWidget( - mainAxisAlignment: MainAxisAlignment.center, - englishText: globalConfigurationsModel.callForTextEng ?? "", - arabicText: globalConfigurationsModel.callForTextArb ?? "", + englishText: globalConfigurationsModel.queueNoTextEng ?? "", + arabicText: globalConfigurationsModel.queueNoTextArb ?? "", fontSize: SizeConfig.getWidthMultiplier()! * 2.2, + mainAxisAlignment: MainAxisAlignment.start, ), ), - ], - Expanded( - flex: 3, - child: Container( - child: engArabicTextWithSeparatorWidget( - mainAxisAlignment: MainAxisAlignment.end, - englishText: (globalConfigurationsModel.qTypeEnum == QTypeEnum.appointment ? globalConfigurationsModel.roomTextEng : globalConfigurationsModel.counterTextEng) ?? "", - arabicText: (globalConfigurationsModel.qTypeEnum == QTypeEnum.appointment ? globalConfigurationsModel.roomTextArb : globalConfigurationsModel.counterTextArb) ?? "", - fontSize: SizeConfig.getWidthMultiplier()! * 2.2, + if (globalConfigurationsModel.qTypeEnum == QTypeEnum.appointment) ...[ + Expanded( + flex: 5, + child: engArabicTextWithSeparatorWidget( + mainAxisAlignment: MainAxisAlignment.center, + englishText: globalConfigurationsModel.callForTextEng ?? "", + arabicText: globalConfigurationsModel.callForTextArb ?? "", + fontSize: SizeConfig.getWidthMultiplier()! * 2.2, + ), + ), + ], + Expanded( + flex: 3, + child: Container( + child: engArabicTextWithSeparatorWidget( + mainAxisAlignment: MainAxisAlignment.end, + englishText: (globalConfigurationsModel.qTypeEnum == QTypeEnum.appointment ? globalConfigurationsModel.roomTextEng : globalConfigurationsModel.counterTextEng) ?? "", + arabicText: (globalConfigurationsModel.qTypeEnum == QTypeEnum.appointment ? globalConfigurationsModel.roomTextArb : globalConfigurationsModel.counterTextArb) ?? "", + fontSize: SizeConfig.getWidthMultiplier()! * 2.2, + ), ), ), - ), - ], + ], + ), ), ), - ), - SizedBox(height: SizeConfig.getHeightMultiplier()! * 0.06), - Expanded( - child: Padding( - padding: EdgeInsets.symmetric(horizontal: SizeConfig.getWidthMultiplier() * 6), - child: ListView.separated( - separatorBuilder: (context, int index) => Divider( - color: AppColors.lightBorderColor, - thickness: SizeConfig.getHeightMultiplier()! * 0.01, - height: SizeConfig.getHeightMultiplier()! * 0.14, + SizedBox(height: SizeConfig.getHeightMultiplier()! * 0.06), + Expanded( + child: Padding( + padding: EdgeInsets.symmetric(horizontal: SizeConfig.getWidthMultiplier() * 3), + child: ListView.separated( + separatorBuilder: (context, int index) => Padding( + padding: EdgeInsets.only(right: SizeConfig.getWidthMultiplier() * 2), + child: Divider( + color: AppColors.lightBorderColor, + thickness: SizeConfig.getHeightMultiplier()! * 0.01, + height: SizeConfig.getHeightMultiplier()! * 0.14, + ), + ), + itemCount: otherTickets.length, + itemBuilder: (ctx, index) { + final ticketModel = otherTickets[index].ticketModel; + return ticketListItem(ticketModel: ticketModel); + }, ), - itemCount: otherTickets.length, - itemBuilder: (ctx, index) { - final ticketModel = otherTickets[index].ticketModel; - return ticketListItem(ticketModel: ticketModel); - }, ), ), - ), - ], + ], + ), ), - ), - ) + ) + ], ]; return (screenOrientationEnum == ScreenOrientationEnum.portraitUp || screenOrientationEnum == ScreenOrientationEnum.portraitDown) diff --git a/lib/views/main_queue_screen/components/ticket_item_calling_card.dart b/lib/views/main_queue_screen/components/ticket_item_calling_card.dart index e9ae6dc..05dc158 100644 --- a/lib/views/main_queue_screen/components/ticket_item_calling_card.dart +++ b/lib/views/main_queue_screen/components/ticket_item_calling_card.dart @@ -60,7 +60,6 @@ class QueueItemCallingCard extends StatelessWidget { @override Widget build(BuildContext context) { final text = "${callTypeEnum.getMessageByCallTypeForEnglish(globalConfigurationsModel, isListView: false)} | $roomText $roomNo"; - return Stack( children: [ customShadowSmoothContainerWithBackground( @@ -68,95 +67,102 @@ class QueueItemCallingCard extends StatelessWidget { callTypeEnum: callTypeEnum, child: Directionality( textDirection: textDirection, - child: Column( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - Padding( - padding: EdgeInsets.only( - right: textDirection == TextDirection.ltr ? SizeConfig.getWidthMultiplier() * 3.5 : 0, - left: textDirection == TextDirection.rtl ? SizeConfig.getWidthMultiplier() * 3.5 : 0, - ), - child: callTypeEnum.getIconByCallType(SizeConfig.getHeightMultiplier() * 0.5), - ), - SizedBox(height: SizeConfig.getHeightMultiplier()! * 0.15), - IntrinsicWidth( - child: callTypeContainer( - textDirection: textDirection, - padding: EdgeInsets.all(SizeConfig.getHeightMultiplier() * 0.1), - color: callTypeEnum.getColorByCallType(), - child: engArabicTextWithSeparatorWidget( - englishText: roomNo, - arabicText: roomTextAr, - color: AppColors.whiteColor, - mainAxisAlignment: MainAxisAlignment.center, - ), - ), - ), - SizedBox(height: SizeConfig.getHeightMultiplier()! * 0.15), - Padding( - padding: EdgeInsets.only( - right: textDirection == TextDirection.ltr ? SizeConfig.getWidthMultiplier() * 3.5 : 0, - left: textDirection == TextDirection.rtl ? SizeConfig.getWidthMultiplier() * 3.5 : 0, - ), - child: AppText( - callTypeEnum.getMessageByCallTypeForArabic(globalConfigurationsModel, isListView: false), - color: callTypeEnum.getColorByCallType(), - fontSize: SizeConfig.getWidthMultiplier() * 2.5, - fontHeight: 1, - fontFamily: AppStrings.fontNameGesTwo, - ), - ), - SizedBox(height: SizeConfig.getHeightMultiplier()! * 0.15), - Padding( - padding: EdgeInsets.only( - right: textDirection == TextDirection.ltr ? SizeConfig.getWidthMultiplier() * 3.5 : 0, - left: textDirection == TextDirection.rtl ? SizeConfig.getWidthMultiplier() * 3.5 : 0, - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.end, + child: IntrinsicHeight( + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, children: [ - ClipRRect( + Column( + children: [ + Padding( + padding: EdgeInsets.only( + left: textDirection == TextDirection.rtl ? SizeConfig.getWidthMultiplier() * 3.5 : 0, + right: textDirection == TextDirection.ltr ? SizeConfig.getWidthMultiplier() * 3.5 : 0, + ), + child: callTypeEnum.getIconByCallType(SizeConfig.getHeightMultiplier() * 0.5), + ), + SizedBox(height: SizeConfig.getHeightMultiplier()! * 0.15), + IntrinsicWidth( + child: callTypeContainer( + textDirection: textDirection, + padding: EdgeInsets.all(SizeConfig.getHeightMultiplier() * 0.1), + color: callTypeEnum.getColorByCallType(), + child: engArabicTextWithSeparatorWidget( + englishText: roomNo, + arabicText: roomTextAr, + color: AppColors.whiteColor, + mainAxisAlignment: MainAxisAlignment.center, + ), + ), + ), + ], + ), + Padding( + padding: EdgeInsets.only( + left: textDirection == TextDirection.rtl ? SizeConfig.getWidthMultiplier() * 5 : 0, + right: textDirection == TextDirection.ltr ? SizeConfig.getWidthMultiplier() * 5 : 0, + top: SizeConfig.getHeightMultiplier() * 0.25, + ), child: AppText( - text, - color: callTypeEnum.getColorByCallType(), - fontSize: SizeConfig.getWidthMultiplier() * 2.4, + getFormattedTicket(ticketNo, isClinicAdded), + fontSize: SizeConfig.getWidthMultiplier() * 7.4, + letterSpacing: -1, + fontHeight: 0.5, + color: AppColors.greyTextColor, + fontWeight: FontWeight.bold, fontFamily: AppStrings.fontNamePoppins, - textAlign: TextAlign.left, - textOverflow: TextOverflow.clip, - maxLines: 1, ), ), ], ), - ), - ], + SizedBox(height: SizeConfig.getHeightMultiplier() * 0.17), + Padding( + padding: EdgeInsets.only( + left: textDirection == TextDirection.ltr ? SizeConfig.getWidthMultiplier() * 3.5 : 0, + right: textDirection == TextDirection.rtl ? SizeConfig.getWidthMultiplier() * 3.5 : 0, + ), + child: Row( + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AppText( + callTypeEnum.getMessageByCallTypeForArabic(globalConfigurationsModel, isListView: false), + color: callTypeEnum.getColorByCallType(), + fontSize: SizeConfig.getWidthMultiplier() * 2.5, + fontHeight: 1, + fontFamily: AppStrings.fontNameGesTwo, + ), + SizedBox(height: SizeConfig.getHeightMultiplier() * 0.05), + ClipRRect( + child: AppText( + text, + color: callTypeEnum.getColorByCallType(), + fontSize: SizeConfig.getWidthMultiplier() * 2.4, + fontFamily: AppStrings.fontNamePoppins, + textAlign: TextAlign.left, + textOverflow: TextOverflow.clip, + maxLines: 1, + ), + ), + ], + ), + ], + ), + ), + ], + ), ), ), ), - Padding( - padding: EdgeInsets.only( - top: SizeConfig.getHeightMultiplier() * 0.1, - left: textDirection == TextDirection.ltr ? SizeConfig.getWidthMultiplier() * 2 : 0, - right: textDirection == TextDirection.rtl ? SizeConfig.getWidthMultiplier() * 2 : 0, - ), + Positioned( + top: SizeConfig.getHeightMultiplier() * 0.1, + left: SizeConfig.getWidthMultiplier() * 2, child: SvgPicture.asset(AppAssets.hmgLogoPatternDarkIcon, height: SizeConfig.getHeightMultiplier() * 1), ), - Padding( - padding: EdgeInsets.only( - left: textDirection == TextDirection.ltr ? SizeConfig.getWidthMultiplier() * 6 : 0, - right: textDirection == TextDirection.rtl ? SizeConfig.getWidthMultiplier() * 6 : 0, - top: SizeConfig.getHeightMultiplier() * 0.4, - ), - child: AppText( - getFormattedTicket(ticketNo, isClinicAdded), - fontSize: SizeConfig.getWidthMultiplier() * 7.4, - letterSpacing: -1, - fontHeight: 0.5, - color: AppColors.greyTextColor, - fontWeight: FontWeight.bold, - fontFamily: AppStrings.fontNamePoppins, - ), - ), ], ); } diff --git a/lib/views/main_queue_screen/components/ticket_item_normal_card.dart b/lib/views/main_queue_screen/components/ticket_item_normal_card.dart index a5e0387..b22f568 100644 --- a/lib/views/main_queue_screen/components/ticket_item_normal_card.dart +++ b/lib/views/main_queue_screen/components/ticket_item_normal_card.dart @@ -1,4 +1,3 @@ -import 'package:blinking_text/blinking_text.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:hmg_qline/constants/app_constants.dart'; @@ -20,6 +19,8 @@ class QueueItemNormalCard extends StatelessWidget { final CallTypeEnum callTypeEnum; final ScreenTypeEnum screenTypeEnum; final LanguageEnum langTypeEnum; + final double? height; + final double? width; const QueueItemNormalCard({ super.key, @@ -33,6 +34,8 @@ class QueueItemNormalCard extends StatelessWidget { required this.callTypeEnum, required this.screenTypeEnum, required this.langTypeEnum, + this.height, + this.width, }); String getFormattedTicket(String ticketNo, bool isClinicAdded) { @@ -53,90 +56,105 @@ class QueueItemNormalCard extends StatelessWidget { return Stack( children: [ customShadowSmoothContainer( - padding: EdgeInsets.symmetric( - vertical: SizeConfig.getHeightMultiplier() * 0.1, - horizontal: SizeConfig.getWidthMultiplier() * 1.5, + height: height, + width: width, + padding: EdgeInsets.only( + top: SizeConfig.getHeightMultiplier() * 0.05, + left: SizeConfig.getWidthMultiplier() * 1.5, + right: SizeConfig.getWidthMultiplier() * 1.5, ), child: Directionality( textDirection: textDirection, - child: Column( - children: [ - SizedBox(height: SizeConfig.getHeightMultiplier()! * 0.14), - AppText( - getFormattedTicket(ticketNo, isClinicAdded), - fontSize: SizeConfig.getWidthMultiplier() * 5, - letterSpacing: -1, - fontHeight: 0.5, - color: AppColors.greyTextColor, - fontWeight: FontWeight.bold, - fontFamily: AppStrings.fontNamePoppins, - ), - SizedBox(height: SizeConfig.getHeightMultiplier()! * 0.15), - Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - callTypeEnum.getIconByCallType(SizeConfig.getHeightMultiplier() * 0.35), - ], - ), - SizedBox(height: SizeConfig.getHeightMultiplier()! * 0.14), - IntrinsicWidth( - child: callTypeContainer( - textDirection: textDirection, - isDisableRightBorderRadius: false, - padding: EdgeInsets.all(SizeConfig.getHeightMultiplier() * 0.05), - color: callTypeEnum.getColorByCallType(), - child: engArabicTextWithSeparatorWidget( - fontSize: SizeConfig.getWidthMultiplier()! * 1.8, - englishText: roomNo, - arabicText: roomTextAr, - color: AppColors.whiteColor, - mainAxisAlignment: MainAxisAlignment.center, + child: IntrinsicHeight( + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Flexible( + flex: 3, + child: Center( + child: AppText( + getFormattedTicket(ticketNo, isClinicAdded), + fontSize: SizeConfig.getWidthMultiplier() * 5, + letterSpacing: -1, + fontHeight: 0.5, + color: AppColors.greyTextColor, + fontWeight: FontWeight.bold, + fontFamily: AppStrings.fontNamePoppins, + ), + ), + ), + Flexible( + flex: 3, + child: Row( + children: [ + callTypeEnum.getIconByCallType(SizeConfig.getHeightMultiplier() * 0.35), + ], + ), + ), + Flexible( + flex: 4, + child: Center( + child: AppText( + textAlign: TextAlign.center, + "${callTypeEnum.getMessageByCallTypeForArabic(globalConfigurationsModel, isListView: false)} ", + color: AppColors.greyTextColor, + fontSize: SizeConfig.getWidthMultiplier() * 2, + fontHeight: 1, + fontFamily: AppStrings.fontNameGesTwo, + maxLines: 2, + textOverflow: TextOverflow.clip, + ), ), ), - ), - SizedBox(height: SizeConfig.getHeightMultiplier()! * 0.14), - AppText( - textAlign: TextAlign.center, - "${callTypeEnum.getMessageByCallTypeForArabic(globalConfigurationsModel, isListView: false)} ", - color: callTypeEnum.getColorByCallType(), - fontSize: SizeConfig.getWidthMultiplier() * 2, - fontHeight: 1, - fontFamily: AppStrings.fontNameGesTwo, - maxLines: 2, - textOverflow: TextOverflow.clip, - ), - SizedBox(height: SizeConfig.getHeightMultiplier()! * 0.14), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Expanded( + Flexible( + flex: 2, + child: IntrinsicWidth( + child: callTypeContainer( + textDirection: textDirection, + isDisableRightBorderRadius: false, + padding: EdgeInsets.all(SizeConfig.getHeightMultiplier() * 0.05), + color: callTypeEnum.getColorByCallType(), + child: engArabicTextWithSeparatorWidget( + fontSize: SizeConfig.getWidthMultiplier()! * 1.8, + englishText: roomNo, + arabicText: roomTextAr, + color: AppColors.whiteColor, + mainAxisAlignment: MainAxisAlignment.center, + ), + ), + ), + ), + Flexible( + flex: 2, + child: Container( + alignment: Alignment.bottomCenter, child: Center( - child: ClipRRect( - child: AppText( - text, - color: callTypeEnum.getColorByCallType(), - fontSize: SizeConfig.getWidthMultiplier() * 1.5, - fontFamily: AppStrings.fontNamePoppins, - textAlign: TextAlign.left, - textOverflow: TextOverflow.clip, - maxLines: 1, - ), + child: AppText( + text, + color: AppColors.greyTextColor, + fontSize: SizeConfig.getWidthMultiplier() * 1.5, + fontFamily: AppStrings.fontNamePoppins, + textAlign: TextAlign.center, + textOverflow: TextOverflow.clip, + fontHeight: 1.2, + maxLines: 1, ), ), ), - ], - ), - ], + ), + ], + ), ), ), ), - Padding( - padding: EdgeInsets.only( - left: textDirection == TextDirection.ltr ? SizeConfig.getWidthMultiplier() * 2 : 0, - right: textDirection == TextDirection.rtl ? SizeConfig.getWidthMultiplier() * 2 : 0, - top: SizeConfig.getHeightMultiplier() * 0.1, + Positioned( + left: textDirection == TextDirection.rtl ? SizeConfig.getWidthMultiplier() * 2 : null, + right: textDirection == TextDirection.ltr ? SizeConfig.getWidthMultiplier() * 2 : null, + top: SizeConfig.getHeightMultiplier() * 0.1, + child: SvgPicture.asset( + AppAssets.hmgLogoPatternLightIcon, + height: SizeConfig.getHeightMultiplier() * 0.8, ), - child: SvgPicture.asset(AppAssets.hmgLogoPatternLightIcon, height: SizeConfig.getHeightMultiplier() * 0.8), ), ], ); diff --git a/lib/views/main_queue_screen/main_queue_screen.dart b/lib/views/main_queue_screen/main_queue_screen.dart index 5cbfcb7..238fc81 100644 --- a/lib/views/main_queue_screen/main_queue_screen.dart +++ b/lib/views/main_queue_screen/main_queue_screen.dart @@ -121,18 +121,21 @@ class _MainQueueScreenState extends State { ), ], ); - } else if (queuingViewModel.currentTickets.length > AppConstants.thresholdForListUI) { - widget = PriorityTicketsWithSidelist( - tickets: queuingViewModel.currentTickets, - globalConfigurationsModel: screenConfigViewModel.globalConfigurationsModel, - screenOrientationEnum: screenConfigViewModel.globalConfigurationsModel.orientationTypeEnum, - ); } else { - widget = PriorityTickets( + widget = PriorityTicketsWithSideSection( tickets: queuingViewModel.currentTickets, globalConfigurationsModel: screenConfigViewModel.globalConfigurationsModel, + screenOrientationEnum: screenConfigViewModel.globalConfigurationsModel.orientationTypeEnum, + showThankyouMessage: queuingViewModel.currentTickets.length <= AppConstants.thresholdForListUI, + // showThankyouMessage: true, ); } + // else { + // widget = PriorityTickets( + // tickets: queuingViewModel.currentTickets, + // globalConfigurationsModel: screenConfigViewModel.globalConfigurationsModel, + // ); + // } return widget; }, diff --git a/pubspec.yaml b/pubspec.yaml index 9abc469..8005cc0 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -57,11 +57,9 @@ dependencies: restart_app: ^1.3.2 zo_animated_border: ^1.0.1 animated_flip_counter: ^0.3.4 +# smooth_corner: ^1.1.1 + -# esc_pos_printer: ^4.0.0 # Ensure you are using the latest version -# esc_pos_utils: ^1.0.0 -# win32: ^5.8.0 -# tuple: ^2.0.2 dependency_overrides: http: ^1.2.2