Completed kiosk ui screens

faiz_kiosk
Faiz Hashmi 7 months ago
parent ad5f5b7852
commit c46c475feb

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 30 KiB

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="100px" height="100px" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4 0H6V2H10V4H8.86807C8.57073 5.66996 7.78574 7.17117 6.6656 8.35112C7.46567 8.73941 8.35737 8.96842 9.29948 8.99697L10.2735 6H12.7265L15.9765 16H13.8735L13.2235 14H9.77647L9.12647 16H7.0235L8.66176 10.9592C7.32639 10.8285 6.08165 10.3888 4.99999 9.71246C3.69496 10.5284 2.15255 11 0.5 11H0V9H0.5C1.5161 9 2.47775 8.76685 3.33437 8.35112C2.68381 7.66582 2.14629 6.87215 1.75171 6H4.02179C4.30023 6.43491 4.62904 6.83446 4.99999 7.19044C5.88743 6.33881 6.53369 5.23777 6.82607 4H0V2H4V0ZM12.5735 12L11.5 8.69688L10.4265 12H12.5735Z" fill="#000000"/>
</svg>

After

Width:  |  Height:  |  Size: 825 B

@ -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<String, WidgetBuilder> routes = {
splash: (context) => const SplashScreen(),
kioskMainScreen: (context) => const KioskMainScreen(),
mainQueueScreen: (context) => const MainQueueScreen(),
};
}

@ -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";

@ -13,6 +13,8 @@ abstract class ScreenDetailsRepo {
Future<GenericRespModel?> createNextTickets({required int ticketNumber});
Future<GenericRespModel?> createTicketFromKiosk({required int queueId});
Future<WidgetsConfigModel?> getScreenConfigurationsByIP({required String ipAddress});
Future<WeathersWidgetModel?> getWeatherDetailsByCity({required String cityId});
@ -77,6 +79,28 @@ class ScreenDetailsRepoImp implements ScreenDetailsRepo {
}
}
@override
Future<GenericRespModel?> 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<WidgetsConfigModel?> getScreenConfigurationsByIP({required String ipAddress}) async {
try {

@ -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,
}

@ -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;
}

@ -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<void> 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();
}

@ -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,
),
],
),
),
),
),
);
}

@ -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,
),
],

@ -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<ScreenConfigViewModel>(
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<ScreenConfigViewModel, ScreenOrientationEnum>(
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(),
),
);
},
);
}
}

@ -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<ScreenConfigViewModel>(
builder: (BuildContext context, ScreenConfigViewModel screenConfigVM, Widget? child) {

@ -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<ScreenConfigViewModel>().currentScreenTypeEnum: ${context.read<ScreenConfigViewModel>().currentScreenTypeEnum}");
if (context.read<ScreenConfigViewModel>().currentScreenTypeEnum == ScreenTypeEnum.kioskScreen) {
context.navigateReplaceTo(AppRoutes.kioskMainScreen);
} else {
context.navigateReplaceTo(AppRoutes.mainQueueScreen);
}
});
}
return const Scaffold(

@ -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:

Loading…
Cancel
Save