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