This commit is contained in:
Patrick Alvin Alcala 2025-03-03 17:23:39 +08:00
parent ecccd4a9bf
commit 2d3f5bd96e
11 changed files with 184 additions and 143 deletions

View file

@ -1,3 +1,5 @@
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:gap/gap.dart';
import 'package:internet_connection_checker/internet_connection_checker.dart';
@ -14,6 +16,7 @@ import 'package:pharmacy_mobile/widgets/input_widget.dart';
import 'package:pharmacy_mobile/widgets/page_background_widget.dart';
import 'package:pharmacy_mobile/widgets/snackbar_widget.dart';
import 'package:pharmacy_mobile/widgets/text_widget.dart';
import 'package:pharmacy_mobile/widgets/textbox_widget.dart';
import 'package:pharmacy_mobile/widgets/title_widget.dart';
import 'package:go_router/go_router.dart';
@ -29,6 +32,7 @@ class _AddStockPageState extends State<AddStockPage> with WidgetsBindingObserver
final _refMedicines = RefMedicines();
final _quantityController = TextEditingController();
final _dateController = TextEditingController();
// final _barcodeController = TextEditingController();
final _stocks = Stocks();
late bool _isLoading = false;
@ -37,6 +41,8 @@ class _AddStockPageState extends State<AddStockPage> with WidgetsBindingObserver
late DateTime selectedDate = DateTime.now();
late String barcode = '';
final sampleBarcode = '8992185411017';
void _getMedicines() async {
_medicineList = await _refMedicines.getList();
@ -89,21 +95,21 @@ class _AddStockPageState extends State<AddStockPage> with WidgetsBindingObserver
Future<void> _scanBarcode() async {
final scannedBarcode = await barcodeScan(context);
final meds = await _getMedicineUsingBarcode(scannedBarcode);
setState(() {
_updateMedicine(scannedBarcode);
barcode = meds;
});
}
// Future<String> _getMedicineUsingBarcode(String barcode) async {
// final encryptedBarcode = await _refMedicines.getBarcode(barcode);
// final barcode = decrypt(encryptedBarcode);
// return barcode;
// }
Future<String> _getMedicineUsingBarcode(String barcode) async {
final medicine = await _refMedicines.getNameUsingBarcode(barcode);
return medicine;
}
@override
void initState() {
_getMedicines();
autoRun();
super.initState();
}
@ -139,70 +145,70 @@ class _AddStockPageState extends State<AddStockPage> with WidgetsBindingObserver
color: 'green',
child: Form(
key: _formKey,
child: Center(
child: DropdownWrapperMultiWidget(
list: _medicineList,
text: 'Data',
children: [
child: DropdownWrapperMultiWidget(
list: _medicineList,
text: 'Data',
children: [
if (barcode.isEmpty)
DropDownWidget(
label: 'Medicine Name',
list: _medicineList,
listTitle: 'medicine_name',
onChanged: _updateMedicine,
// value: _selectedMedicine,
),
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
GestureDetector(
onTap: _scanBarcode,
child: Container(
padding: const EdgeInsets.only(top: 8),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
// color: const Color.fromARGB(0, 36, 18, 58),
// boxShadow: [
// BoxShadow(
// color: Colors.black26,
// blurRadius: 5.0,
// offset: Offset(0, 2),
// ),
// ],
),
child: const Row(
children: [
Icon(
Icons.qr_code_scanner,
color: Colors.white,
size: 22,
),
Gap(8),
TextWidget(
text: 'Scan Barcode',
size: 14,
color: Colors.white,
),
],
),
)
else
TextboxWidget(text: barcode),
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
GestureDetector(
onTap: _scanBarcode,
child: Container(
padding: const EdgeInsets.only(top: 8),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
// color: const Color.fromARGB(0, 36, 18, 58),
// boxShadow: [
// BoxShadow(
// color: Colors.black26,
// blurRadius: 5.0,
// offset: Offset(0, 2),
// ),
// ],
),
child: const Row(
children: [
Icon(
Icons.qr_code_scanner,
color: Colors.white,
size: 22,
),
Gap(8),
TextWidget(
text: 'Scan Barcode',
size: 14,
color: Colors.white,
),
],
),
),
],
),
const Gap(16),
InputWidget(label: 'Quantity', controller: _quantityController),
const Gap(16),
DatePickerWidget(
label: 'Date Expiration',
controller: _dateController,
value: selectedDate,
),
const Gap(32),
if (_isLoading)
const Center(child: CircularProgressIndicator(color: Colors.white))
else
ButtonWidget(text: 'Add Stock', onPressed: _saveStock),
],
),
),
],
),
const Gap(16),
InputWidget(label: 'Quantity', controller: _quantityController),
const Gap(16),
DatePickerWidget(
label: 'Date Expiration',
controller: _dateController,
value: selectedDate,
),
const Gap(32),
if (_isLoading)
const Center(child: CircularProgressIndicator(color: Colors.white))
else
ButtonWidget(text: 'Add Stock', onPressed: _saveStock),
],
),
),
)