diff --git a/assets/images/hmglogo_pharmacy.svg b/assets/images/hmglogo_pharmacy.svg
new file mode 100644
index 0000000..24a79de
--- /dev/null
+++ b/assets/images/hmglogo_pharmacy.svg
@@ -0,0 +1,34 @@
+
diff --git a/assets/images/language_icon.svg b/assets/images/language_icon.svg
new file mode 100644
index 0000000..c740a6a
--- /dev/null
+++ b/assets/images/language_icon.svg
@@ -0,0 +1,4 @@
+
+
\ No newline at end of file
diff --git a/lib/config/routes.dart b/lib/config/routes.dart
index 6ba96cd..65c8073 100644
--- a/lib/config/routes.dart
+++ b/lib/config/routes.dart
@@ -1,15 +1,18 @@
import 'package:flutter/cupertino.dart';
import 'package:hmg_qline/views/main_queue_screen/main_queue_screen.dart';
import 'package:hmg_qline/views/splash_screen/splash_screen.dart';
+import 'package:hmg_qline/views/kiosk_screens/kiosk_main_screen.dart';
class AppRoutes {
//User
static const String splash = "/splash";
static const String mainQueueScreen = "/mainQueueScreen";
+ static const String kioskMainScreen = "/kioskMainScreen";
static const String initialRoute = splash;
static final Map routes = {
splash: (context) => const SplashScreen(),
+ kioskMainScreen: (context) => const KioskMainScreen(),
mainQueueScreen: (context) => const MainQueueScreen(),
};
}
diff --git a/lib/constants/app_constants.dart b/lib/constants/app_constants.dart
index dcabba5..2cbeb19 100644
--- a/lib/constants/app_constants.dart
+++ b/lib/constants/app_constants.dart
@@ -53,8 +53,10 @@ class AppColors {
class AppAssets {
static String hmgLogo = "assets/images/hmglogo.svg";
+ static String hmgLogoPharmacy = "assets/images/hmglogo_pharmacy.svg";
static String noInternetImage = "assets/images/undraw_connected_world_wuay.png";
static String cloudLogo = "assets/images/cloud_logo.png";
+ static String languageIcon = "assets/images/language_icon.svg";
//IconPaths
static String vitalSignIcon = "assets/images/vitalsign_icon.svg";
@@ -93,6 +95,7 @@ class ApiConstants {
static String baseUrl = 'https://ms.hmg.com/nscapi';
static String baseUrlHub = '$baseUrl/PatientCallingHub';
static String baseUrlApi = '$baseUrl/api';
+ static String baseUrlApiGen = '$baseUrl/api/Gen/';
static String baseUrlApiPatientCall = '$baseUrlApi/PatientCall';
static String createTicket = '$baseUrlApiPatientCall/LAB_PatientCallNo_Get';
static String commonConfigGet = '$baseUrlApiPatientCall/Common_Config_GetByIP';
@@ -102,6 +105,9 @@ class ApiConstants {
static String prayerTimeToday = "$baseUrlApiPatientCall/PrayerTime_Today";
static String ticketCallRequestUpdate = "$baseUrlApiPatientCall/CallRequest_QueueUpdate";
+ //Generic
+ static String createTicketForKiosk = '$baseUrlApiGen/GEN_PatientCallNo_Get';
+
// Signal R Constants
static String sendQLinePatientCall = "SendQLinePatientCall";
diff --git a/lib/repositories/screen_details_repo.dart b/lib/repositories/screen_details_repo.dart
index 4aa0c16..383c052 100644
--- a/lib/repositories/screen_details_repo.dart
+++ b/lib/repositories/screen_details_repo.dart
@@ -13,6 +13,8 @@ abstract class ScreenDetailsRepo {
Future createNextTickets({required int ticketNumber});
+ Future createTicketFromKiosk({required int queueId});
+
Future getScreenConfigurationsByIP({required String ipAddress});
Future getWeatherDetailsByCity({required String cityId});
@@ -77,6 +79,28 @@ class ScreenDetailsRepoImp implements ScreenDetailsRepo {
}
}
+ @override
+ Future createTicketFromKiosk({required int queueId}) async {
+ try {
+ var params = {
+ "projectID": "15",
+ "createdBy": "101",
+ "isVidaPlus": true,
+ "apiKey": AppConstants.apiKey,
+ };
+ GenericRespModel adsGenericModel = await apiClientInstance.postJsonForObject(
+ (json) => GenericRespModel.fromJson(json),
+ ApiConstants.createTicketForKiosk,
+ params,
+ );
+ return adsGenericModel;
+ } catch (e) {
+ logger.e(e.toString());
+ InfoComponents.showToast(e.toString());
+ return null;
+ }
+ }
+
@override
Future getScreenConfigurationsByIP({required String ipAddress}) async {
try {
diff --git a/lib/utilities/enums.dart b/lib/utilities/enums.dart
index 7f9900e..86760f1 100644
--- a/lib/utilities/enums.dart
+++ b/lib/utilities/enums.dart
@@ -15,7 +15,8 @@ enum QTypeEnum {
appointment, // 1
lab, // 2
rad, // 3
- pharmacy, // 4
+ general, // 4
+ pharmacy, // 5
}
enum ScreenTypeEnum {
@@ -23,6 +24,7 @@ enum ScreenTypeEnum {
roomLevelScreen, // 2
receptionScreen, // 3
dashboardScreen, // 4
+ kioskScreen, // 5
}
enum LanguageEnum {
@@ -30,3 +32,8 @@ enum LanguageEnum {
arabic,
}
+enum KioskScreenStateEnums {
+ languageState,
+ queueSelectionState,
+ ticketNoState,
+}
diff --git a/lib/utilities/extensions.dart b/lib/utilities/extensions.dart
index 9637459..d0ef02b 100644
--- a/lib/utilities/extensions.dart
+++ b/lib/utilities/extensions.dart
@@ -63,6 +63,8 @@ extension QTypeEnumExtension on int {
case 3:
return QTypeEnum.rad;
case 4:
+ return QTypeEnum.general;
+ case 5:
return QTypeEnum.pharmacy;
default:
return QTypeEnum.lab;
@@ -89,6 +91,8 @@ extension ScreenTypeExtension on int {
return ScreenTypeEnum.receptionScreen;
case 4:
return ScreenTypeEnum.dashboardScreen;
+ case 5:
+ return ScreenTypeEnum.kioskScreen;
default:
return ScreenTypeEnum.waitingAreaScreen;
}
diff --git a/lib/view_models/screen_config_view_model.dart b/lib/view_models/screen_config_view_model.dart
index a812953..8c314dc 100644
--- a/lib/view_models/screen_config_view_model.dart
+++ b/lib/view_models/screen_config_view_model.dart
@@ -66,6 +66,20 @@ class ScreenConfigViewModel extends ChangeNotifier {
notifyListeners();
}
+ KioskScreenStateEnums kioskScreenStateEnum = KioskScreenStateEnums.languageState;
+
+ void updateKioskScreenState(KioskScreenStateEnums state) {
+ kioskScreenStateEnum = state;
+ notifyListeners();
+ }
+
+ LanguageEnum currentSelectedKioskLanguage = LanguageEnum.english;
+
+ void updateCurrentSelectedKioskLanguage(LanguageEnum value) {
+ currentSelectedKioskLanguage = value;
+ notifyListeners();
+ }
+
updateCurrentScreenRotation(ScreenOrientationEnum value) {
globalConfigurationsModel.orientationTypeEnum = value;
notifyListeners();
@@ -108,13 +122,19 @@ class ScreenConfigViewModel extends ChangeNotifier {
GlobalConfigurationsModel globalConfigurationsModel = GlobalConfigurationsModel();
Future getGlobalConfigurationsByIP() async {
+ // TODO: TEST ONLY
+ updateCurrentScreenTypeEnum(ScreenTypeEnum.kioskScreen);
+ updateCurrentQTypeEnum(QTypeEnum.general);
+
GlobalConfigurationsModel? response = await screenDetailsRepo.getGlobalScreenConfigurations(ipAddress: currentScreenIP);
if (response == null) {
+ log("response; ${response}");
return;
}
updateGlobalConfigurationsModel(value: response);
- updateCurrentScreenTypeEnum(globalConfigurationsModel.screenTypeEnum);
- updateCurrentQTypeEnum(globalConfigurationsModel.qTypeEnum);
+ // updateCurrentScreenTypeEnum(globalConfigurationsModel.screenTypeEnum);
+ // updateCurrentQTypeEnum(globalConfigurationsModel.qTypeEnum);
+
notifyListeners();
}
diff --git a/lib/views/common_widgets/app_general_widgets.dart b/lib/views/common_widgets/app_general_widgets.dart
new file mode 100644
index 0000000..02058bb
--- /dev/null
+++ b/lib/views/common_widgets/app_general_widgets.dart
@@ -0,0 +1,184 @@
+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/utilities/enums.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';
+
+Widget getWeatherWidget(ScreenConfigViewModel screenConfigViewModel) {
+ if (screenConfigViewModel.weathersWidgetModel.maxTemp == null || screenConfigViewModel.weathersWidgetModel.minTemp == null || screenConfigViewModel.weathersWidgetModel.iconPhrase == null) {
+ return const SizedBox.shrink();
+ }
+ return Container(
+ height: (screenConfigViewModel.globalConfigurationsModel.orientationTypeEnum == ScreenOrientationEnum.portraitUp ||
+ screenConfigViewModel.globalConfigurationsModel.orientationTypeEnum == ScreenOrientationEnum.portraitDown)
+ ? SizeConfig.getHeightMultiplier() * 2
+ : SizeConfig.getHeightMultiplier() * 0.9,
+ padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 10),
+ margin: const EdgeInsets.symmetric(vertical: 10, horizontal: 10),
+ decoration: AppColors.configWidgetDecoration,
+ child: Directionality(
+ textDirection: screenConfigViewModel.globalConfigurationsModel.textDirection,
+ child: Row(
+ crossAxisAlignment: CrossAxisAlignment.center,
+ children: [
+ Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ AppText(
+ screenConfigViewModel.globalConfigurationsModel.weatherText,
+ color: Colors.grey,
+ fontSize: SizeConfig.getWidthMultiplier() * 2,
+ fontFamily: screenConfigViewModel.globalConfigurationsModel.screenLanguageEnum == LanguageEnum.arabic ? AppStrings.fontNameCairo : AppStrings.fontNamePoppins,
+ ),
+ AppText(
+ "${screenConfigViewModel.globalConfigurationsModel.maxText}: ${screenConfigViewModel.weathersWidgetModel.maxTemp}°C , ${screenConfigViewModel.globalConfigurationsModel.minText}: ${screenConfigViewModel.weathersWidgetModel.minTemp}°C",
+ fontSize: SizeConfig.getWidthMultiplier() * 3,
+ fontHeight: 1,
+ fontFamily: screenConfigViewModel.globalConfigurationsModel.screenLanguageEnum == LanguageEnum.arabic ? AppStrings.fontNameCairo : AppStrings.fontNamePoppins,
+ ),
+ ],
+ ),
+ const SizedBox(width: 15),
+ SvgPicture.asset(
+ screenConfigViewModel.weathersWidgetModel.weatherIconPath ?? AppAssets.weatherIcon,
+ height: SizeConfig.getHeightMultiplier() * 0.5,
+ ),
+ ],
+ ),
+ ),
+ );
+}
+
+Widget getPrayerWidget(ScreenConfigViewModel screenConfigViewModel) {
+ if (screenConfigViewModel.nextPrayerToShowWithTime.isEmpty) {
+ return const SizedBox.shrink();
+ }
+ return SizedBox(
+ child: Container(
+ height: (screenConfigViewModel.globalConfigurationsModel.orientationTypeEnum == ScreenOrientationEnum.portraitUp ||
+ screenConfigViewModel.globalConfigurationsModel.orientationTypeEnum == ScreenOrientationEnum.portraitDown)
+ ? SizeConfig.getHeightMultiplier() * 2
+ : SizeConfig.getHeightMultiplier() * 0.9,
+ padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 10),
+ margin: const EdgeInsets.symmetric(vertical: 10, horizontal: 10),
+ decoration: AppColors.configWidgetDecoration,
+ child: Directionality(
+ textDirection: screenConfigViewModel.globalConfigurationsModel.textDirection,
+ child: Row(
+ crossAxisAlignment: CrossAxisAlignment.center,
+ children: [
+ Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ AppText(
+ screenConfigViewModel.globalConfigurationsModel.nextPrayerText,
+ color: Colors.grey,
+ fontSize: SizeConfig.getWidthMultiplier() * 1.5,
+ fontFamily: screenConfigViewModel.globalConfigurationsModel.screenLanguageEnum == LanguageEnum.arabic ? AppStrings.fontNameCairo : AppStrings.fontNamePoppins,
+ ),
+ AppText(
+ screenConfigViewModel.nextPrayerToShowWithTime,
+ fontSize: SizeConfig.getWidthMultiplier() * 3,
+ fontHeight: 1,
+ fontFamily: screenConfigViewModel.globalConfigurationsModel.screenLanguageEnum == LanguageEnum.arabic ? AppStrings.fontNameCairo : AppStrings.fontNamePoppins,
+ ),
+ ],
+ ),
+ const SizedBox(width: 15),
+ SvgPicture.asset(
+ AppAssets.mosqueIcon,
+ height: SizeConfig.getWidthMultiplier() * 7,
+ ),
+ ],
+ ),
+ ),
+ ),
+ );
+}
+
+int getFlexForScreenTypes(ScreenConfigViewModel screenConfigVM) {
+ int flex = 1;
+ if (screenConfigVM.currentScreenTypeEnum == ScreenTypeEnum.roomLevelScreen) {
+ if (screenConfigVM.globalConfigurationsModel.orientationTypeEnum == ScreenOrientationEnum.portraitUp ||
+ screenConfigVM.globalConfigurationsModel.orientationTypeEnum == ScreenOrientationEnum.portraitDown) {
+ flex = 2;
+ } else {
+ flex = 3;
+ }
+ } else {
+ if (screenConfigVM.globalConfigurationsModel.orientationTypeEnum == ScreenOrientationEnum.portraitUp ||
+ screenConfigVM.globalConfigurationsModel.orientationTypeEnum == ScreenOrientationEnum.portraitDown) {
+ flex = 2;
+ } else {
+ flex = 1;
+ }
+ }
+ return flex;
+}
+
+Widget counterNoText(int counterNo) {
+ return AppText(
+ "${AppStrings.counterNo}$counterNo",
+ fontFamily: AppStrings.fontNamePoppins,
+ textAlign: TextAlign.center,
+ fontWeight: FontWeight.bold,
+ color: Colors.transparent,
+ fontSize: SizeConfig.getWidthMultiplier() * 8,
+ );
+}
+
+Widget noPatientInQueue({required String text, required String fontName, required bool isForRoomLevel, required int counterNo}) {
+ Widget noPatientText = Center(
+ child: AppText(
+ text,
+ fontFamily: fontName,
+ textAlign: TextAlign.center,
+ fontSize: SizeConfig.getWidthMultiplier() * 9,
+ ),
+ );
+ if (isForRoomLevel) {
+ return Column(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [counterNoText(counterNo), noPatientText, const SizedBox.shrink()],
+ );
+ } else {
+ return noPatientText;
+ }
+}
+
+Widget commonSelectionCardKiosk({required ScreenConfigViewModel screenConfigViewModel, required String title, required String icon, required VoidCallback onTap}) {
+ log("screenConfigViewModel.globalConfigurationsModel.orientationTypeEnum: ${screenConfigViewModel.globalConfigurationsModel.orientationTypeEnum}");
+ return InkWell(
+ onTap: onTap,
+ child: SizedBox(
+ child: Container(
+ constraints: BoxConstraints(minWidth: SizeConfig.getWidthMultiplier() * 30),
+ padding: const EdgeInsets.all(5),
+ margin: const EdgeInsets.all(10),
+ decoration: AppColors.configWidgetDecoration,
+ child: Directionality(
+ textDirection: screenConfigViewModel.globalConfigurationsModel.textDirection,
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ SvgPicture.asset(icon, height: SizeConfig.getWidthMultiplier() * 12),
+ const SizedBox(height: 15),
+ AppText(
+ title,
+ fontSize: SizeConfig.getWidthMultiplier() * 6,
+ fontHeight: 1,
+ fontFamily: screenConfigViewModel.globalConfigurationsModel.screenLanguageEnum == LanguageEnum.arabic ? AppStrings.fontNameCairo : AppStrings.fontNamePoppins,
+ ),
+ ],
+ ),
+ ),
+ ),
+ ),
+ );
+}
diff --git a/lib/views/common_widgets/app_header.dart b/lib/views/common_widgets/app_header.dart
index 329d566..85d2f64 100644
--- a/lib/views/common_widgets/app_header.dart
+++ b/lib/views/common_widgets/app_header.dart
@@ -67,7 +67,7 @@ class AppHeader extends StatelessWidget implements PreferredSizeWidget {
alignment: Alignment.center,
height: SizeConfig.getHeightMultiplier() * 0.65,
padding: const EdgeInsets.only(left: 20, right: 20),
- decoration: BoxDecoration(color: AppColors.redColor),
+ decoration: BoxDecoration(color: AppColors.greenColor),
child: Directionality(
textDirection: globalConfigurationsModel.textDirection,
child: Row(
@@ -80,7 +80,7 @@ class AppHeader extends StatelessWidget implements PreferredSizeWidget {
fontFamily: globalConfigurationsModel.screenLanguageEnum == LanguageEnum.arabic ? AppStrings.fontNameCairo : AppStrings.fontNamePoppins,
),
SvgPicture.asset(
- AppAssets.hmgLogo,
+ AppAssets.hmgLogoPharmacy,
height: SizeConfig.getHeightMultiplier() * 0.5,
),
],
diff --git a/lib/views/kiosk_screens/kiosk_main_screen.dart b/lib/views/kiosk_screens/kiosk_main_screen.dart
new file mode 100644
index 0000000..3de6796
--- /dev/null
+++ b/lib/views/kiosk_screens/kiosk_main_screen.dart
@@ -0,0 +1,138 @@
+import 'package:flutter/material.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_footer.dart';
+import 'package:hmg_qline/views/common_widgets/app_general_widgets.dart';
+import 'package:hmg_qline/views/common_widgets/app_header.dart';
+import 'package:hmg_qline/views/common_widgets/app_scaffold.dart';
+import 'package:hmg_qline/views/view_helpers/size_config.dart';
+import 'package:provider/provider.dart';
+
+class KioskMainScreen extends StatelessWidget {
+ const KioskMainScreen({super.key});
+
+ Widget getBody({required BuildContext context}) {
+ return Consumer(
+ builder: (BuildContext context, ScreenConfigViewModel screenConfigVM, Widget? child) {
+ return Column(
+ children: [
+ if (screenConfigVM.globalConfigurationsModel.screenTypeEnum != ScreenTypeEnum.roomLevelScreen) ...[
+ Expanded(
+ flex: getFlexForScreenTypes(screenConfigVM),
+ child: Padding(
+ padding: const EdgeInsets.symmetric(horizontal: 20),
+ child: Row(
+ children: [
+ if (screenConfigVM.globalConfigurationsModel.isWeatherReq) ...[
+ getWeatherWidget(screenConfigVM),
+ ],
+ const SizedBox(width: 20),
+ if (screenConfigVM.globalConfigurationsModel.isPrayerTimeReq) ...[
+ getPrayerWidget(screenConfigVM),
+ ],
+ ],
+ ),
+ ),
+ )
+ ],
+ const SizedBox(height: 12),
+ Expanded(flex: 10, child: dataContentKiosk(context: context)),
+ if (!screenConfigVM.globalConfigurationsModel.isWeatherReq && !screenConfigVM.globalConfigurationsModel.isPrayerTimeReq) ...[
+ const SizedBox(height: 100),
+ ],
+ ],
+ );
+ },
+ );
+ }
+
+ Widget kioskLanguageStateWidget(ScreenConfigViewModel screenConfigViewModel) {
+ return GridView.builder(
+ itemCount: 2,
+ gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2),
+ itemBuilder: (BuildContext context, int index) {
+ return Padding(
+ padding: const EdgeInsets.all(20),
+ child: commonSelectionCardKiosk(
+ screenConfigViewModel: screenConfigViewModel,
+ title: index == 0 ? "English" : "عربي",
+ icon: AppAssets.languageIcon,
+ onTap: () {
+ if (index == 0) {
+ screenConfigViewModel.updateCurrentSelectedKioskLanguage(LanguageEnum.english);
+ screenConfigViewModel.updateKioskScreenState(KioskScreenStateEnums.queueSelectionState);
+ } else {
+ screenConfigViewModel.updateCurrentSelectedKioskLanguage(LanguageEnum.arabic);
+ screenConfigViewModel.updateKioskScreenState(KioskScreenStateEnums.queueSelectionState);
+ }
+ },
+ ),
+ );
+ },
+ );
+ }
+
+ Widget kioskQueueSelectionStateWidget(ScreenConfigViewModel screenConfigViewModel) {
+ return GridView.builder(
+ itemCount: 5,
+ gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
+ crossAxisCount: (screenConfigViewModel.globalConfigurationsModel.orientationTypeEnum == ScreenOrientationEnum.portraitUp ||
+ screenConfigViewModel.globalConfigurationsModel.orientationTypeEnum == ScreenOrientationEnum.portraitDown)
+ ? 3
+ : 2,
+ ),
+ itemBuilder: (BuildContext context, int index) {
+ return Column(mainAxisSize: MainAxisSize.min, children: [
+ commonSelectionCardKiosk(
+ screenConfigViewModel: screenConfigViewModel,
+ title: "New Latest Certificate Generation ${index + 1}",
+ icon: AppAssets.languageIcon,
+ onTap: () {
+ screenConfigViewModel.updateKioskScreenState(KioskScreenStateEnums.languageState);
+ }),
+ ]);
+ });
+ }
+
+ Widget kioskTicketNumberStateWidget(ScreenConfigViewModel screenConfigViewModel) {
+ return Row(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ commonSelectionCardKiosk(screenConfigViewModel: screenConfigViewModel, title: "English", icon: AppAssets.languageIcon, onTap: () {}),
+ commonSelectionCardKiosk(screenConfigViewModel: screenConfigViewModel, title: "عربي", icon: AppAssets.languageIcon, onTap: () {}),
+ ],
+ );
+ }
+
+ Widget dataContentKiosk({required BuildContext context}) {
+ return Padding(
+ padding: const EdgeInsets.all(10),
+ child: Consumer(builder: (BuildContext context, ScreenConfigViewModel screenConfigViewModel, Widget? child) {
+ return switch (screenConfigViewModel.kioskScreenStateEnum) {
+ KioskScreenStateEnums.languageState => kioskLanguageStateWidget(screenConfigViewModel),
+ KioskScreenStateEnums.queueSelectionState => kioskQueueSelectionStateWidget(screenConfigViewModel),
+ KioskScreenStateEnums.ticketNoState => kioskTicketNumberStateWidget(screenConfigViewModel),
+ };
+ }),
+ );
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return Selector(
+ selector: (context, screenConfigViewModel) => screenConfigViewModel.globalConfigurationsModel.orientationTypeEnum,
+ builder: (BuildContext context, ScreenOrientationEnum screenOrientationEnum, Widget? child) {
+ return RotatedBox(
+ quarterTurns: screenOrientationEnum.getTurnsByOrientation(),
+ child: AppScaffold(
+ appBar: const AppHeader(),
+ body: getBody(context: context),
+ bottomNavigationBar: const AppFooter(),
+ ),
+ );
+ },
+ );
+ }
+}
diff --git a/lib/views/main_queue_screen/main_queue_screen.dart b/lib/views/main_queue_screen/main_queue_screen.dart
index a335647..50d0025 100644
--- a/lib/views/main_queue_screen/main_queue_screen.dart
+++ b/lib/views/main_queue_screen/main_queue_screen.dart
@@ -1,171 +1,20 @@
-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/utilities/enums.dart';
import 'package:hmg_qline/utilities/extensions.dart';
import 'package:hmg_qline/view_models/queuing_view_model.dart';
import 'package:hmg_qline/view_models/screen_config_view_model.dart';
import 'package:hmg_qline/views/common_widgets/app_footer.dart';
+import 'package:hmg_qline/views/common_widgets/app_general_widgets.dart';
import 'package:hmg_qline/views/common_widgets/app_header.dart';
import 'package:hmg_qline/views/common_widgets/app_scaffold.dart';
-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/main_queue_screen/components/priority_tickets_sidelist.dart';
-import 'package:hmg_qline/views/view_helpers/size_config.dart';
import 'package:provider/provider.dart';
class MainQueueScreen extends StatelessWidget {
const MainQueueScreen({super.key});
- Widget getWeatherWidget(ScreenConfigViewModel screenConfigViewModel) {
- if (screenConfigViewModel.weathersWidgetModel.maxTemp == null || screenConfigViewModel.weathersWidgetModel.minTemp == null || screenConfigViewModel.weathersWidgetModel.iconPhrase == null) {
- return const SizedBox.shrink();
- }
- return Container(
- height: (screenConfigViewModel.globalConfigurationsModel.orientationTypeEnum == ScreenOrientationEnum.portraitUp ||
- screenConfigViewModel.globalConfigurationsModel.orientationTypeEnum == ScreenOrientationEnum.portraitDown)
- ? SizeConfig.getHeightMultiplier() * 2
- : SizeConfig.getHeightMultiplier() * 0.9,
- padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 10),
- margin: const EdgeInsets.symmetric(vertical: 10, horizontal: 10),
- decoration: AppColors.configWidgetDecoration,
- child: Directionality(
- textDirection: screenConfigViewModel.globalConfigurationsModel.textDirection,
- child: Row(
- crossAxisAlignment: CrossAxisAlignment.center,
- children: [
- Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- AppText(
- screenConfigViewModel.globalConfigurationsModel.weatherText,
- color: Colors.grey,
- fontSize: SizeConfig.getWidthMultiplier() * 2,
- fontFamily: screenConfigViewModel.globalConfigurationsModel.screenLanguageEnum == LanguageEnum.arabic ? AppStrings.fontNameCairo : AppStrings.fontNamePoppins,
- ),
- AppText(
- "${screenConfigViewModel.globalConfigurationsModel.maxText}: ${screenConfigViewModel.weathersWidgetModel.maxTemp}°C , ${screenConfigViewModel.globalConfigurationsModel.minText}: ${screenConfigViewModel.weathersWidgetModel.minTemp}°C",
- fontSize: SizeConfig.getWidthMultiplier() * 3,
- fontHeight: 1,
- fontFamily: screenConfigViewModel.globalConfigurationsModel.screenLanguageEnum == LanguageEnum.arabic ? AppStrings.fontNameCairo : AppStrings.fontNamePoppins,
- ),
- ],
- ),
- const SizedBox(width: 15),
- SvgPicture.asset(
- screenConfigViewModel.weathersWidgetModel.weatherIconPath ?? AppAssets.weatherIcon,
- height: SizeConfig.getHeightMultiplier() * 0.5,
- ),
- ],
- ),
- ),
- );
- }
-
- Widget getPrayerWidget(ScreenConfigViewModel screenConfigViewModel) {
- if (screenConfigViewModel.nextPrayerToShowWithTime.isEmpty) {
- return const SizedBox.shrink();
- }
- return SizedBox(
- child: Container(
- height: (screenConfigViewModel.globalConfigurationsModel.orientationTypeEnum == ScreenOrientationEnum.portraitUp ||
- screenConfigViewModel.globalConfigurationsModel.orientationTypeEnum == ScreenOrientationEnum.portraitDown)
- ? SizeConfig.getHeightMultiplier() * 2
- : SizeConfig.getHeightMultiplier() * 0.9,
- padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 10),
- margin: const EdgeInsets.symmetric(vertical: 10, horizontal: 10),
- decoration: AppColors.configWidgetDecoration,
- child: Directionality(
- textDirection: screenConfigViewModel.globalConfigurationsModel.textDirection,
- child: Row(
- crossAxisAlignment: CrossAxisAlignment.center,
- children: [
- Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- AppText(
- screenConfigViewModel.globalConfigurationsModel.nextPrayerText,
- color: Colors.grey,
- fontSize: SizeConfig.getWidthMultiplier() * 1.5,
- fontFamily: screenConfigViewModel.globalConfigurationsModel.screenLanguageEnum == LanguageEnum.arabic ? AppStrings.fontNameCairo : AppStrings.fontNamePoppins,
- ),
- AppText(
- screenConfigViewModel.nextPrayerToShowWithTime,
- fontSize: SizeConfig.getWidthMultiplier() * 3,
- fontHeight: 1,
- fontFamily: screenConfigViewModel.globalConfigurationsModel.screenLanguageEnum == LanguageEnum.arabic ? AppStrings.fontNameCairo : AppStrings.fontNamePoppins,
- ),
- ],
- ),
- const SizedBox(width: 15),
- SvgPicture.asset(
- AppAssets.mosqueIcon,
- height: SizeConfig.getWidthMultiplier() * 7,
- ),
- ],
- ),
- ),
- ),
- );
- }
-
- Widget counterNoText(int counterNo) {
- return AppText(
- "${AppStrings.counterNo}$counterNo",
- fontFamily: AppStrings.fontNamePoppins,
- textAlign: TextAlign.center,
- fontWeight: FontWeight.bold,
- color: Colors.transparent,
- fontSize: SizeConfig.getWidthMultiplier() * 8,
- );
- }
-
- Widget noPatientInQueue({required String text, required String fontName, required bool isForRoomLevel, required int counterNo}) {
- Widget noPatientText = Center(
- child: AppText(
- text,
- fontFamily: fontName,
- textAlign: TextAlign.center,
- fontSize: SizeConfig.getWidthMultiplier() * 9,
- ),
- );
- if (isForRoomLevel) {
- return Column(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [counterNoText(counterNo), noPatientText, const SizedBox.shrink()],
- );
- } else {
- return noPatientText;
- }
- }
-
- Widget qamarsBirthdayWidget() {
- return Column(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- AppText("Good Bye", fontFamily: 'Poppins-SemiBold.ttf', fontSize: SizeConfig.getWidthMultiplier() * 15),
- Center(
- child: AppText("Syed Qamar :(", fontFamily: 'Poppins-SemiBold.ttf', fontSize: SizeConfig.getWidthMultiplier() * 11),
- ),
- ],
- );
- }
-
- // if (globalConfigurationsModel.screenTypeEnum == ScreenTypeEnum.roomLevelScreen) ...[
- // SizedBox(height: 20,),
- // AppText(
- // AppStrings.counterNo,
- // fontFamily: AppStrings.fontNamePoppins,
- // textAlign: TextAlign.center,
- // fontWeight: FontWeight.bold,
- // fontSize: SizeConfig.getWidthMultiplier() * 10,
- // ),
- // ]
-
Widget dataContent({required BuildContext context}) {
return Consumer2(
builder: (BuildContext context, ScreenConfigViewModel screenConfigViewModel, QueuingViewModel queuingViewModel, Widget? child) {
@@ -215,27 +64,6 @@ class MainQueueScreen extends StatelessWidget {
);
}
- int getFlexForScreenTypes(ScreenConfigViewModel screenConfigVM) {
- int flex = 1;
-
- if (screenConfigVM.currentScreenTypeEnum == ScreenTypeEnum.roomLevelScreen) {
- if (screenConfigVM.globalConfigurationsModel.orientationTypeEnum == ScreenOrientationEnum.portraitUp ||
- screenConfigVM.globalConfigurationsModel.orientationTypeEnum == ScreenOrientationEnum.portraitDown) {
- flex = 2;
- } else {
- flex = 3;
- }
- } else {
- if (screenConfigVM.globalConfigurationsModel.orientationTypeEnum == ScreenOrientationEnum.portraitUp ||
- screenConfigVM.globalConfigurationsModel.orientationTypeEnum == ScreenOrientationEnum.portraitDown) {
- flex = 2;
- } else {
- flex = 1;
- }
- }
- return flex;
- }
-
Widget getBody({required BuildContext context}) {
return Consumer(
builder: (BuildContext context, ScreenConfigViewModel screenConfigVM, Widget? child) {
diff --git a/lib/views/splash_screen/splash_screen.dart b/lib/views/splash_screen/splash_screen.dart
index c0a8d97..f32cbcb 100644
--- a/lib/views/splash_screen/splash_screen.dart
+++ b/lib/views/splash_screen/splash_screen.dart
@@ -4,6 +4,8 @@ import 'package:hmg_qline/utilities/extensions.dart';
import 'package:hmg_qline/view_models/queuing_view_model.dart';
import 'package:hmg_qline/view_models/screen_config_view_model.dart';
import 'package:provider/provider.dart';
+import 'package:hmg_qline/utilities/enums.dart';
+import 'dart:developer';
class SplashScreen extends StatelessWidget {
const SplashScreen({super.key});
@@ -44,7 +46,14 @@ class SplashScreen extends StatelessWidget {
// If the data is loaded successfully
if (snapshot.connectionState == ConnectionState.done) {
- Future.delayed(const Duration(seconds: 1)).whenComplete(() => context.navigateReplaceTo(AppRoutes.mainQueueScreen));
+ Future.delayed(const Duration(seconds: 1)).whenComplete(() {
+ log("context.read().currentScreenTypeEnum: ${context.read().currentScreenTypeEnum}");
+ if (context.read().currentScreenTypeEnum == ScreenTypeEnum.kioskScreen) {
+ context.navigateReplaceTo(AppRoutes.kioskMainScreen);
+ } else {
+ context.navigateReplaceTo(AppRoutes.mainQueueScreen);
+ }
+ });
}
return const Scaffold(
diff --git a/pubspec.lock b/pubspec.lock
index 80c01f2..bb55096 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -61,10 +61,10 @@ packages:
dependency: transitive
description:
name: collection
- sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
+ sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
url: "https://pub.dev"
source: hosted
- version: "1.18.0"
+ version: "1.19.0"
connectivity_plus:
dependency: "direct main"
description:
@@ -260,18 +260,18 @@ packages:
dependency: transitive
description:
name: leak_tracker
- sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
+ sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06"
url: "https://pub.dev"
source: hosted
- version: "10.0.5"
+ version: "10.0.7"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
- sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
+ sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379"
url: "https://pub.dev"
source: hosted
- version: "3.0.5"
+ version: "3.0.8"
leak_tracker_testing:
dependency: transitive
description:
@@ -556,7 +556,7 @@ packages:
dependency: transitive
description: flutter
source: sdk
- version: "0.0.99"
+ version: "0.0.0"
source_span:
dependency: transitive
description:
@@ -593,10 +593,10 @@ packages:
dependency: transitive
description:
name: stack_trace
- sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
+ sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377"
url: "https://pub.dev"
source: hosted
- version: "1.11.1"
+ version: "1.12.0"
stream_channel:
dependency: transitive
description:
@@ -609,10 +609,10 @@ packages:
dependency: transitive
description:
name: string_scanner
- sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
+ sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3"
url: "https://pub.dev"
source: hosted
- version: "1.2.0"
+ version: "1.3.0"
term_glyph:
dependency: transitive
description:
@@ -625,10 +625,10 @@ packages:
dependency: transitive
description:
name: test_api
- sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
+ sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c"
url: "https://pub.dev"
source: hosted
- version: "0.7.2"
+ version: "0.7.3"
tuple:
dependency: transitive
description:
@@ -689,10 +689,10 @@ packages:
dependency: transitive
description:
name: vm_service
- sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
+ sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b
url: "https://pub.dev"
source: hosted
- version: "14.2.5"
+ version: "14.3.0"
wakelock_plus:
dependency: "direct main"
description: