import 'package:flutter/material.dart'; import 'package:gap/gap.dart'; import 'package:internet_connection_checker/internet_connection_checker.dart'; import 'package:pharmacy_mobile/tables/ref_categories.dart'; import 'package:pharmacy_mobile/widgets/button_widget.dart'; import 'package:pharmacy_mobile/widgets/form_border_widget.dart'; 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/title_widget.dart'; import 'package:go_router/go_router.dart'; class AddCategoryPage extends StatefulWidget { const AddCategoryPage({super.key}); @override State createState() => _AddCategoryPageState(); } class _AddCategoryPageState extends State { final _formKey = GlobalKey(); final _categoryController = TextEditingController(); final _refCategories = RefCategories(); bool _isLoading = false; void _saveCategory() async { setState(() => _isLoading = true); try { if (await InternetConnectionChecker.instance.hasConnection) { await _refCategories.postCategory(_categoryController.text.toUpperCase()); if (mounted) { showNotification(context, 'Category Saved', true); WidgetsBinding.instance.addPostFrameCallback((_) { if (mounted) { context.push('/main'); } }); } } else { if (mounted) { showNotification(context, 'Error: No Internet Connection', false); } } } catch (e) { if (mounted) { showNotification(context, 'Error: $e', false); } } finally { setState(() => _isLoading = false); } } @override Widget build(BuildContext context) { return Scaffold( body: PageBackgroundWidget( child: Center( child: Column( children: [ const Gap(96), const TitleWidget(firstTextSize: 20, secondTextSize: 32), const Gap(32), const TextWidget(text: 'Add Category'), const Gap(16), FormBorderWidget( color: 'blue', child: Form( key: _formKey, child: Center( child: Column( children: [ InputWidget(label: 'Category Name', controller: _categoryController), const Gap(32), if (_isLoading) Center(child: CircularProgressIndicator(color: Colors.white)) else ButtonWidget(text: 'Save Category', onPressed: _saveCategory) ], ), )), ) ], ), )), ); } }