You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
HMG_QLine/lib/views/common_widgets/app_general_widgets.dart

184 lines
7.7 KiB
Dart

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}) {
return InkWell(
onTap: onTap,
child: SizedBox(
child: Container(
constraints: BoxConstraints(minWidth: SizeConfig.getWidthMultiplier() * 40),
padding: const EdgeInsets.all(30),
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,
),
],
),
),
),
),
);
}