This commit is contained in:
Patrick Alvin Alcala 2025-02-14 11:57:34 +08:00
parent b45cf8bd73
commit 941e9eaa5b
8 changed files with 91 additions and 19 deletions

View file

@ -2,12 +2,14 @@ import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:gap/gap.dart';
import 'package:image_picker/image_picker.dart';
import 'package:internet_connection_checker/internet_connection_checker.dart';
import 'package:pharmacy_mobile/tables/ref_categories.dart';
import 'package:pharmacy_mobile/tables/ref_generic_names.dart';
import 'package:pharmacy_mobile/tables/ref_manufactorers.dart';
import 'package:pharmacy_mobile/tables/ref_medicines.dart';
import 'package:pharmacy_mobile/tables/ref_types.dart';
import 'package:pharmacy_mobile/tables/storage.dart';
import 'package:pharmacy_mobile/widgets/button_widget.dart';
import 'package:pharmacy_mobile/widgets/dropdown_widget.dart';
import 'package:pharmacy_mobile/widgets/dropdown_wrapper_widget.dart';
@ -18,6 +20,7 @@ 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:uuid/uuid.dart';
class AddMedicinePage extends StatefulWidget {
const AddMedicinePage({super.key});
@ -33,6 +36,7 @@ class _AddMedicinePageState extends State<AddMedicinePage> {
final _refTypes = RefTypes();
final _refManufactorer = RefManufactorers();
final _refMedicines = RefMedicines();
final _storage = Storage();
final _nameController = TextEditingController();
final FocusNode _focusNode = FocusNode();
bool _isLoading = false;
@ -44,6 +48,9 @@ class _AddMedicinePageState extends State<AddMedicinePage> {
late String _selectedType = '';
late List _manufactorerList = [];
late String _selectedManufactorer = '';
late String uuid = '';
late bool imageUploaded = false;
late String imageUrl = '';
void _checkResult(List list, String name) {
if (list.isEmpty) {
@ -84,8 +91,7 @@ class _AddMedicinePageState extends State<AddMedicinePage> {
setState(() {});
final sample = await _refMedicines.getList2();
log(sample.toString());
// final sample = await _refMedicines.getList2();
} else {
if (mounted) {
showNotification(context, 'Error: No Internet Connection', false);
@ -125,7 +131,7 @@ class _AddMedicinePageState extends State<AddMedicinePage> {
final medTypeUUID = await _refTypes.getUUID(_selectedType);
final medManufactorerUUID = await _refManufactorer.getUUID(_selectedManufactorer);
await _refMedicines.postMedicine(medName, medManufactorerUUID, medGenericUUID, medTypeUUID);
await _refMedicines.postMedicine(uuid, medName, medManufactorerUUID, medGenericUUID, medTypeUUID);
} else {
if (mounted) {
showNotification(context, 'Error: No Internet Connection', false);
@ -140,6 +146,20 @@ class _AddMedicinePageState extends State<AddMedicinePage> {
}
}
void _addImage() async {
final imageName = Uuid().v4();
uuid = imageName;
final ImagePicker picker = ImagePicker();
final XFile? image = await picker.pickImage(source: ImageSource.gallery);
const storageName = 'ref_medicines_images';
if (image == null) {
return;
}
imageUrl = await _storage.uploadImage(storageName, image, '$imageName.webp');
}
@override
void initState() {
autoRun();
@ -213,6 +233,17 @@ class _AddMedicinePageState extends State<AddMedicinePage> {
listTitle: 'manufactorer_name',
onChanged: _updateManufactorer)),
const Gap(32),
// if (imageUrl.isNotEmpty)
ClipRRect(
borderRadius: BorderRadius.circular(12), // Add your desired border radius here
child: Image.network(
'https://lijihnvjlucyvxfhghqd.supabase.co/storage/v1/object/public/ref_medicines_images//ab033e88-1933-496b-8e11-47bf85d21d8f.webp',
fit: BoxFit.cover,
width: 250,
height: 250)),
// else
// ButtonWidget(text: 'Add Image', onPressed: _addImage),
const Gap(32),
if (_isLoading)
const Center(child: CircularProgressIndicator(color: Colors.white))
else

View file

@ -69,12 +69,7 @@ class _ListStocksPageState extends State<ListStocksPage> {
setState(() {
_isLoading = true;
});
// _stockList = await _stocks.getList();
// final ff = File('assets/ph_logo.webp');
// await _storage.uploadFile(ff);
final aa = await _storage.getList();
// final aa = await _storage.createBucket('aa');
log(aa.toString());
_stockList = await _stocks.getList();
setState(() {
_isLoading = false;

View file

@ -11,6 +11,7 @@ import 'package:pharmacy_mobile/widgets/text_widget.dart';
import 'package:pharmacy_mobile/widgets/title_widget.dart';
import 'package:internet_connection_checker/internet_connection_checker.dart';
import 'package:supabase_flutter/supabase_flutter.dart';
import 'package:shared_preferences/shared_preferences.dart';
class LoginPage extends StatefulWidget {
const LoginPage({super.key});
@ -54,8 +55,12 @@ class _LoginPageState extends State<LoginPage> {
await _authService.signIn(email, password);
if (mounted) {
final user = _authService.getCurrentUser();
showNotification(context, 'Login Successful', true);
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString('user', user.toString());
WidgetsBinding.instance.addPostFrameCallback((_) {
if (mounted) {
context.push('/main');

View file

@ -9,16 +9,38 @@ 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/title_widget.dart';
import 'package:shared_preferences/shared_preferences.dart';
class MainPage extends StatelessWidget {
class MainPage extends StatefulWidget {
const MainPage({super.key});
@override
State<MainPage> createState() => _MainPageState();
}
class _MainPageState extends State<MainPage> {
void _checkLogged() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
bool userStatus = prefs.containsKey('user');
if (!userStatus) {
// ignore: use_build_context_synchronously
context.go('/');
}
}
@override
void initState() {
_checkLogged();
super.initState();
}
@override
Widget build(BuildContext context) {
final authService = AuthService();
void signOut() async {
await authService.signOut().then((_) => {context.push('/'), showNotification(context, 'Logged Out', true)});
// ignore: use_build_context_synchronously
await authService.signOut().then((_) => {context.go('/'), showNotification(context, 'Logged Out', true)});
}
return PopScope(