Added AskPrescriptionFor Paharmacy
parent
b4d881d24e
commit
e685cc9575
@ -0,0 +1,46 @@
|
|||||||
|
import 'dart:ui' as ui;
|
||||||
|
|
||||||
|
class KioskLanguageConfigModel {
|
||||||
|
int? id;
|
||||||
|
int? languageID;
|
||||||
|
ui.TextDirection languageTextDirection;
|
||||||
|
String? languageName;
|
||||||
|
String? languageNameN;
|
||||||
|
String? shortForm;
|
||||||
|
String? yourTicketNoText;
|
||||||
|
String? waitForYourTurnText;
|
||||||
|
String? thankYouText;
|
||||||
|
String? goBackToMainPage;
|
||||||
|
bool? isActive;
|
||||||
|
|
||||||
|
KioskLanguageConfigModel({
|
||||||
|
required this.id,
|
||||||
|
required this.languageID,
|
||||||
|
this.languageTextDirection = ui.TextDirection.ltr,
|
||||||
|
required this.languageName,
|
||||||
|
required this.languageNameN,
|
||||||
|
required this.shortForm,
|
||||||
|
required this.yourTicketNoText,
|
||||||
|
required this.waitForYourTurnText,
|
||||||
|
required this.thankYouText,
|
||||||
|
required this.goBackToMainPage,
|
||||||
|
required this.isActive,
|
||||||
|
});
|
||||||
|
|
||||||
|
factory KioskLanguageConfigModel.fromJson(Map<String, dynamic> json) {
|
||||||
|
return KioskLanguageConfigModel(
|
||||||
|
id: json['id'],
|
||||||
|
languageID: json['languageID'],
|
||||||
|
languageTextDirection: ((json['languageTextDirection'] == null || json['languageTextDirection'] == 0 ) ? ui.TextDirection.ltr : ui.TextDirection.rtl),
|
||||||
|
// 0 for English and 1 for Others
|
||||||
|
languageName: json['languageName'],
|
||||||
|
languageNameN: json['languageNameN'],
|
||||||
|
shortForm: json['shortForm'],
|
||||||
|
yourTicketNoText: json['yourTicketNoText'],
|
||||||
|
waitForYourTurnText: json['waitForYourTurnText'],
|
||||||
|
thankYouText: json['thankYouText'],
|
||||||
|
goBackToMainPage: json['goBackToMainPage'],
|
||||||
|
isActive: json['isActive'],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,142 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:hmg_qline/constants/app_constants.dart';
|
||||||
|
import 'package:hmg_qline/utilities/extensions.dart';
|
||||||
|
import 'package:hmg_qline/view_models/screen_config_view_model.dart';
|
||||||
|
import 'package:hmg_qline/views/view_helpers/size_config.dart';
|
||||||
|
import 'package:provider/provider.dart';
|
||||||
|
import 'package:qr_code_scanner_plus/qr_code_scanner_plus.dart';
|
||||||
|
|
||||||
|
class KioskQrScannerScreen extends StatelessWidget {
|
||||||
|
KioskQrScannerScreen({super.key});
|
||||||
|
|
||||||
|
final GlobalKey qrKey = GlobalKey(debugLabel: 'QR');
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
final screenConfigViewModel = context.read<ScreenConfigViewModel>();
|
||||||
|
final size = MediaQuery.of(context).size;
|
||||||
|
final scanArea = (size.width < size.height ? size.width : size.height) * 0.6;
|
||||||
|
return Scaffold(
|
||||||
|
body: SafeArea(
|
||||||
|
child: Stack(
|
||||||
|
children: [
|
||||||
|
Column(
|
||||||
|
children: <Widget>[
|
||||||
|
Expanded(
|
||||||
|
flex: 9,
|
||||||
|
child: QRView(
|
||||||
|
key: qrKey,
|
||||||
|
overlay: QrScannerOverlayShape(
|
||||||
|
borderColor: AppColors.redColor,
|
||||||
|
borderRadius: 10,
|
||||||
|
borderLength: 30,
|
||||||
|
borderWidth: 10,
|
||||||
|
cutOutSize: scanArea,
|
||||||
|
),
|
||||||
|
onQRViewCreated: (controller) {
|
||||||
|
screenConfigViewModel.onQRViewCreated(
|
||||||
|
controller: controller,
|
||||||
|
onSuccess: () => context.popScreen(),
|
||||||
|
onFailure: () {},
|
||||||
|
);
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Positioned(
|
||||||
|
top: 0,
|
||||||
|
left: 0,
|
||||||
|
right: 0,
|
||||||
|
child: Container(
|
||||||
|
color: Colors.black.withOpacity(0.4),
|
||||||
|
padding: const EdgeInsets.all(16),
|
||||||
|
child: Align(
|
||||||
|
alignment: Alignment.centerLeft,
|
||||||
|
child: Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
GestureDetector(
|
||||||
|
onTap: () => context.popScreen(),
|
||||||
|
child: Row(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Icon(
|
||||||
|
Icons.arrow_back,
|
||||||
|
color: AppColors.whiteColor,
|
||||||
|
size: SizeConfig.getHeightMultiplier() * 0.3,
|
||||||
|
),
|
||||||
|
const SizedBox(width: 8),
|
||||||
|
Text(
|
||||||
|
'Back',
|
||||||
|
style: TextStyle(
|
||||||
|
color: AppColors.whiteColor,
|
||||||
|
fontSize: SizeConfig.getHeightMultiplier() * 0.3,
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
GestureDetector(
|
||||||
|
onTap: () => screenConfigViewModel.flipCamera(),
|
||||||
|
child: Row(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Icon(
|
||||||
|
Icons.flip_camera_ios_outlined,
|
||||||
|
color: AppColors.whiteColor,
|
||||||
|
size: SizeConfig.getHeightMultiplier() * 0.4,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Positioned(
|
||||||
|
bottom: SizeConfig.getHeightMultiplier() * 0.5,
|
||||||
|
left: 0,
|
||||||
|
right: 0,
|
||||||
|
child: Center(
|
||||||
|
child: Consumer<ScreenConfigViewModel>(
|
||||||
|
builder: (BuildContext context, ScreenConfigViewModel screenConfigViewModel, _) {
|
||||||
|
String text = "";
|
||||||
|
|
||||||
|
if (screenConfigViewModel.qrCodeResult != null) {
|
||||||
|
final code = screenConfigViewModel.qrCodeResult?.code;
|
||||||
|
|
||||||
|
int? patientId = int.tryParse(code ?? '');
|
||||||
|
|
||||||
|
if (patientId != null && patientId > 0) {
|
||||||
|
text = "Patient ID: $patientId\nGenerating Ticket...";
|
||||||
|
} else {
|
||||||
|
text = "Invalid QR Code. Please scan a valid patient ID.";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
text = "Please scan your Patient QR from Sulaiman Al Habib Mobile App";
|
||||||
|
}
|
||||||
|
|
||||||
|
return Padding(
|
||||||
|
padding: const EdgeInsets.all(8.0),
|
||||||
|
child: Text(
|
||||||
|
text,
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
style: TextStyle(
|
||||||
|
color: AppColors.whiteColor,
|
||||||
|
fontSize: SizeConfig.getHeightMultiplier() * 0.3,
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue