This commit is contained in:
Patrick Alvin Alcala 2025-02-28 14:08:05 +08:00
parent 27f00e43a7
commit 3572f90b24
24 changed files with 290 additions and 257 deletions

View file

@ -1,12 +1,8 @@
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:gap/gap.dart';
import 'package:internet_connection_checker/internet_connection_checker.dart';
import 'package:pharmacy_mobile/functions/barcode_scan_function.dart';
import 'package:pharmacy_mobile/functions/checkresult_function.dart';
import 'package:pharmacy_mobile/security/encryption.dart';
import 'package:pharmacy_mobile/tables/ref_medicines.dart';
import 'package:pharmacy_mobile/tables/stocks.dart';
import 'package:pharmacy_mobile/widgets/button_widget.dart';
@ -20,7 +16,6 @@ import 'package:pharmacy_mobile/widgets/snackbar_widget.dart';
import 'package:pharmacy_mobile/widgets/text_widget.dart';
import 'package:pharmacy_mobile/widgets/title_widget.dart';
import 'package:go_router/go_router.dart';
import 'package:simple_barcode_scanner/simple_barcode_scanner.dart';
class AddStockPage extends StatefulWidget {
const AddStockPage({super.key});
@ -34,18 +29,16 @@ class _AddStockPageState extends State<AddStockPage> with WidgetsBindingObserver
final _refMedicines = RefMedicines();
final _quantityController = TextEditingController();
final _dateController = TextEditingController();
final _medicineController = TextEditingController();
final _stocks = Stocks();
final bool _isLoading = false;
late bool _isLoading = false;
late List _medicineList = [];
late String _selectedMedicine = '';
late DateTime selectedDate = DateTime.now();
late String barcode = '';
void _getMedicines() async {
_medicineList = await _refMedicines.getList2();
_medicineList = await _refMedicines.getList();
setState(() {
checkResult(context, _medicineList, 'Medicines');
@ -71,11 +64,27 @@ class _AddStockPageState extends State<AddStockPage> with WidgetsBindingObserver
}
void _saveStock() async {
final stockNameUUID = await _refMedicines.getUUID(_selectedMedicine);
final stockQuantity = _quantityController.text;
final stockExpiration = _dateController.text;
setState(() => _isLoading = true);
await _stocks.postStock(stockNameUUID, stockExpiration, stockQuantity);
try {
if (await InternetConnectionChecker.instance.hasConnection) {
final stockNameUUID = await _refMedicines.getUUID(_selectedMedicine);
final stockQuantity = _quantityController.text;
final stockExpiration = _dateController.text;
await _stocks.postStock(stockNameUUID, stockExpiration, stockQuantity);
} else {
if (mounted) {
showNotification(context, 'Error: No Internet Connection', false);
}
}
} catch (e) {
if (mounted) {
showNotification(context, 'Error: $e', false);
}
} finally {
setState(() => _isLoading = false);
}
}
Future<void> _scanBarcode() async {
@ -188,12 +197,10 @@ class _AddStockPageState extends State<AddStockPage> with WidgetsBindingObserver
value: selectedDate,
),
const Gap(32),
ButtonWidget(text: 'Add Stock', onPressed: _saveStock),
const Gap(16),
TextWidget(
text: barcode,
size: 14,
)
if (_isLoading)
const Center(child: CircularProgressIndicator(color: Colors.white))
else
ButtonWidget(text: 'Add Stock', onPressed: _saveStock),
],
),
),