diff --git a/lib/pages/add_generics.dart b/lib/pages/add_generics.dart index 396ae92..7f74f45 100644 --- a/lib/pages/add_generics.dart +++ b/lib/pages/add_generics.dart @@ -5,6 +5,7 @@ import 'package:pharmacy_mobile/tables/ref_categories.dart'; import 'package:pharmacy_mobile/tables/ref_generic_names.dart'; import 'package:pharmacy_mobile/widgets/button_widget.dart'; import 'package:pharmacy_mobile/widgets/dropdown_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/text_widget.dart'; @@ -82,21 +83,24 @@ class _AddGenericsPageState extends State { const Gap(32), const TextWidget(text: 'Add Generics'), const Gap(16), - Form( - key: _formKey, - child: Column( - children: [ - InputWidget(label: 'Name', controller: _nameController), - const Gap(16), - DropDownWidget( - label: 'Category', - list: _categoryList, - listTitle: 'category_name', - onChanged: _updateCategory), - const Gap(16), - ButtonWidget(text: 'Add', onPressed: saveGeneric) - ], - )) + FormBorderWidget( + color: 'blue', + child: Form( + key: _formKey, + child: Column( + children: [ + InputWidget(label: 'Name', controller: _nameController), + const Gap(16), + DropDownWidget( + label: 'Category', + list: _categoryList, + listTitle: 'category_name', + onChanged: _updateCategory), + const Gap(16), + ButtonWidget(text: 'Add', onPressed: saveGeneric) + ], + )), + ) ], )), ), diff --git a/lib/pages/add_medicine.dart b/lib/pages/add_medicine.dart index 4f572df..ec21f76 100644 --- a/lib/pages/add_medicine.dart +++ b/lib/pages/add_medicine.dart @@ -7,6 +7,7 @@ import 'package:pharmacy_mobile/tables/ref_medicines.dart'; import 'package:pharmacy_mobile/tables/ref_types.dart'; import 'package:pharmacy_mobile/widgets/button_widget.dart'; import 'package:pharmacy_mobile/widgets/dropdown_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/text_widget.dart'; @@ -116,39 +117,42 @@ class _AddMedicinePageState extends State { const Gap(32), const TextWidget(text: 'Add Medicine'), const Gap(16), - Form( - key: _formKey, - child: Center( - child: Column( - children: [ - InputWidget(label: 'Name', controller: _nameController), - const Gap(16), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - DropDownWidget( - label: 'Generic Name', - list: _genericNameList, - listTitle: 'generic_name', - onChanged: _updateGeneric), - const Gap(8), - TextWidget(text: _selectedCategory, size: 18), - ], - ), - const Gap(16), - DropDownWidget( - label: 'Type', list: _typeList, listTitle: 'type_name', onChanged: _updateType), - const Gap(16), - DropDownWidget( - label: 'Manufactorer', - list: _manufactorerList, - listTitle: 'manufactorer_name', - onChanged: _updateManufactorer), - const Gap(16), - ButtonWidget(text: 'Save Medicine', onPressed: _saveMedicine) - ], - ), - )) + FormBorderWidget( + color: 'green', + child: Form( + key: _formKey, + child: Center( + child: Column( + children: [ + InputWidget(label: 'Name', controller: _nameController), + const Gap(16), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + DropDownWidget( + label: 'Generic Name', + list: _genericNameList, + listTitle: 'generic_name', + onChanged: _updateGeneric), + const Gap(8), + TextWidget(text: _selectedCategory, size: 18), + ], + ), + const Gap(16), + DropDownWidget( + label: 'Type', list: _typeList, listTitle: 'type_name', onChanged: _updateType), + const Gap(16), + DropDownWidget( + label: 'Manufactorer', + list: _manufactorerList, + listTitle: 'manufactorer_name', + onChanged: _updateManufactorer), + const Gap(16), + ButtonWidget(text: 'Save Medicine', onPressed: _saveMedicine) + ], + ), + )), + ) ], ), ), diff --git a/lib/pages/add_stock.dart b/lib/pages/add_stock.dart index 9fde646..b452c8a 100644 --- a/lib/pages/add_stock.dart +++ b/lib/pages/add_stock.dart @@ -5,6 +5,7 @@ import 'package:pharmacy_mobile/tables/stocks.dart'; import 'package:pharmacy_mobile/widgets/button_widget.dart'; import 'package:pharmacy_mobile/widgets/datepicker_widget.dart'; import 'package:pharmacy_mobile/widgets/dropdown_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/text_widget.dart'; @@ -88,27 +89,30 @@ class _AddStockPageState extends State { const Gap(32), const TextWidget(text: 'Add Stock'), const Gap(16), - Form( - key: _formKey, - child: Center( - child: Column( - children: [ - DropDownWidget( - label: 'Medicine Name', - list: _medicineList, - listTitle: 'medicine_name', - onChanged: _updateMedicine), - const Gap(16), - InputWidget(label: 'Quantity', controller: _quantityController), - const Gap(16), - DatePickerWidget( - label: 'Date Expiration', - controller: _dateController, - value: selectedDate, - ), - const Gap(16), - ButtonWidget(text: 'Add Stock', onPressed: saveStock) - ], + FormBorderWidget( + color: 'green', + child: Form( + key: _formKey, + child: Center( + child: Column( + children: [ + DropDownWidget( + label: 'Medicine Name', + list: _medicineList, + listTitle: 'medicine_name', + onChanged: _updateMedicine), + const Gap(16), + InputWidget(label: 'Quantity', controller: _quantityController), + const Gap(16), + DatePickerWidget( + label: 'Date Expiration', + controller: _dateController, + value: selectedDate, + ), + const Gap(16), + ButtonWidget(text: 'Add Stock', onPressed: saveStock) + ], + ), ), ), ) diff --git a/lib/pages/add_type.dart b/lib/pages/add_type.dart index 0e92afc..2eed6c7 100644 --- a/lib/pages/add_type.dart +++ b/lib/pages/add_type.dart @@ -1,12 +1,8 @@ -import 'dart:developer'; import 'package:gap/gap.dart'; import 'package:flutter/material.dart'; -// import 'package:pharmacy_mobile/auth/auth_service.dart'; -import 'package:pharmacy_mobile/tables/ref_categories.dart'; -import 'package:pharmacy_mobile/tables/ref_generic_names.dart'; import 'package:pharmacy_mobile/tables/ref_types.dart'; import 'package:pharmacy_mobile/widgets/button_widget.dart'; -import 'package:pharmacy_mobile/widgets/dropdown_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/text_widget.dart'; @@ -47,17 +43,20 @@ class _AddTypePageState extends State { const Gap(32), const TextWidget(text: 'Add Medicine Type'), const Gap(16), - Form( - key: _formKey, - child: Center( - child: Column( - children: [ - InputWidget(label: 'Type Name', controller: _typeController), - const Gap(16), - ButtonWidget(text: 'Save Type', onPressed: saveType) - ], - ), - )) + FormBorderWidget( + color: 'blue', + child: Form( + key: _formKey, + child: Center( + child: Column( + children: [ + InputWidget(label: 'Type Name', controller: _typeController), + const Gap(16), + ButtonWidget(text: 'Save Type', onPressed: saveType) + ], + ), + )), + ) ], ), ), diff --git a/lib/pages/main_page.dart b/lib/pages/main_page.dart index a782a2a..d604ec0 100644 --- a/lib/pages/main_page.dart +++ b/lib/pages/main_page.dart @@ -40,29 +40,26 @@ class MainPage extends StatelessWidget { const Gap(32), const TextWidget(text: 'Menu'), const Gap(16), + MenuWidget( + icon: FontAwesomeIcons.squarePlus, + text: 'Add Type', + onPressed: () => {context.push('/addtype')}, + color: 'blue'), + const Gap(16), + MenuWidget( + icon: FontAwesomeIcons.squarePlus, text: 'Add Generics', onPressed: gotoAddGenerics, color: 'blue'), + const Gap(32), MenuWidget( icon: FontAwesomeIcons.squarePlus, text: 'Add Medicine', onPressed: gotoAddMedicine, color: 'green'), const Gap(16), - MenuWidget( - icon: FontAwesomeIcons.squarePlus, - text: 'Add Generics', - onPressed: gotoAddGenerics, - color: 'green'), - const Gap(16), MenuWidget( icon: FontAwesomeIcons.squarePlus, text: 'Add Stock', onPressed: () => {context.push('/addstock')}, color: 'green'), - const Gap(16), - MenuWidget( - icon: FontAwesomeIcons.squarePlus, - text: 'Add Medicine Type', - onPressed: () => {context.push('/addtype')}, - color: 'green'), const Gap(32), MenuWidget( icon: FontAwesomeIcons.listCheck, diff --git a/lib/widgets/form_border_widget.dart b/lib/widgets/form_border_widget.dart new file mode 100644 index 0000000..6dad869 --- /dev/null +++ b/lib/widgets/form_border_widget.dart @@ -0,0 +1,52 @@ +import 'package:flutter/material.dart'; + +class FormBorderWidget extends StatelessWidget { + final Widget child; + final String? color; + + final Color green = const Color.fromRGBO(58, 236, 27, 0.1); + final Color blue = const Color.fromRGBO(27, 90, 236, 0.1); + final Color red = const Color.fromRGBO(236, 27, 27, 0.2); + final Color yellow = const Color.fromRGBO(236, 232, 27, 0.2); + final Color teal = const Color.fromRGBO(27, 236, 229, 0.2); + + const FormBorderWidget({super.key, required this.child, this.color}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.only(left: 32, right: 32), + child: Container( + padding: EdgeInsets.fromLTRB(32, 32, 32, 40), + decoration: BoxDecoration( + color: _getColor(color ?? ''), + borderRadius: BorderRadius.all(Radius.circular(16)), + boxShadow: [ + BoxShadow( + color: const Color.fromRGBO(0, 0, 0, 0.2), // Subtle shadow to give depth + spreadRadius: 0, + blurRadius: 4, + offset: Offset(0, 2), + ) + ]), + child: child), + ); + } + + Color _getColor(String color) { + switch (color.toLowerCase()) { + case 'green': + return green; + case 'blue': + return blue; + case 'red': + return red; + case 'yellow': + return yellow; + case 'teal': + return teal; + default: + return const Color.fromRGBO(57, 38, 62, 0.6); // Default to transparent if color is not recognized + } + } +}