This commit is contained in:
Patrick Alvin Alcala 2025-02-04 12:33:00 +08:00
parent 7fca1e79a8
commit 75cbdbf2fa
6 changed files with 157 additions and 97 deletions

View file

@ -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/tables/ref_generic_names.dart';
import 'package:pharmacy_mobile/widgets/button_widget.dart'; import 'package:pharmacy_mobile/widgets/button_widget.dart';
import 'package:pharmacy_mobile/widgets/dropdown_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/input_widget.dart';
import 'package:pharmacy_mobile/widgets/page_background_widget.dart'; import 'package:pharmacy_mobile/widgets/page_background_widget.dart';
import 'package:pharmacy_mobile/widgets/text_widget.dart'; import 'package:pharmacy_mobile/widgets/text_widget.dart';
@ -82,21 +83,24 @@ class _AddGenericsPageState extends State<AddGenericsPage> {
const Gap(32), const Gap(32),
const TextWidget(text: 'Add Generics'), const TextWidget(text: 'Add Generics'),
const Gap(16), const Gap(16),
Form( FormBorderWidget(
key: _formKey, color: 'blue',
child: Column( child: Form(
children: [ key: _formKey,
InputWidget(label: 'Name', controller: _nameController), child: Column(
const Gap(16), children: [
DropDownWidget( InputWidget(label: 'Name', controller: _nameController),
label: 'Category', const Gap(16),
list: _categoryList, DropDownWidget(
listTitle: 'category_name', label: 'Category',
onChanged: _updateCategory), list: _categoryList,
const Gap(16), listTitle: 'category_name',
ButtonWidget(text: 'Add', onPressed: saveGeneric) onChanged: _updateCategory),
], const Gap(16),
)) ButtonWidget(text: 'Add', onPressed: saveGeneric)
],
)),
)
], ],
)), )),
), ),

View file

@ -7,6 +7,7 @@ import 'package:pharmacy_mobile/tables/ref_medicines.dart';
import 'package:pharmacy_mobile/tables/ref_types.dart'; import 'package:pharmacy_mobile/tables/ref_types.dart';
import 'package:pharmacy_mobile/widgets/button_widget.dart'; import 'package:pharmacy_mobile/widgets/button_widget.dart';
import 'package:pharmacy_mobile/widgets/dropdown_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/input_widget.dart';
import 'package:pharmacy_mobile/widgets/page_background_widget.dart'; import 'package:pharmacy_mobile/widgets/page_background_widget.dart';
import 'package:pharmacy_mobile/widgets/text_widget.dart'; import 'package:pharmacy_mobile/widgets/text_widget.dart';
@ -116,39 +117,42 @@ class _AddMedicinePageState extends State<AddMedicinePage> {
const Gap(32), const Gap(32),
const TextWidget(text: 'Add Medicine'), const TextWidget(text: 'Add Medicine'),
const Gap(16), const Gap(16),
Form( FormBorderWidget(
key: _formKey, color: 'green',
child: Center( child: Form(
child: Column( key: _formKey,
children: [ child: Center(
InputWidget(label: 'Name', controller: _nameController), child: Column(
const Gap(16), children: [
Column( InputWidget(label: 'Name', controller: _nameController),
crossAxisAlignment: CrossAxisAlignment.start, const Gap(16),
children: [ Column(
DropDownWidget( crossAxisAlignment: CrossAxisAlignment.start,
label: 'Generic Name', children: [
list: _genericNameList, DropDownWidget(
listTitle: 'generic_name', label: 'Generic Name',
onChanged: _updateGeneric), list: _genericNameList,
const Gap(8), listTitle: 'generic_name',
TextWidget(text: _selectedCategory, size: 18), 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),
const Gap(16), DropDownWidget(
DropDownWidget( label: 'Type', list: _typeList, listTitle: 'type_name', onChanged: _updateType),
label: 'Manufactorer', const Gap(16),
list: _manufactorerList, DropDownWidget(
listTitle: 'manufactorer_name', label: 'Manufactorer',
onChanged: _updateManufactorer), list: _manufactorerList,
const Gap(16), listTitle: 'manufactorer_name',
ButtonWidget(text: 'Save Medicine', onPressed: _saveMedicine) onChanged: _updateManufactorer),
], const Gap(16),
), ButtonWidget(text: 'Save Medicine', onPressed: _saveMedicine)
)) ],
),
)),
)
], ],
), ),
), ),

View file

@ -5,6 +5,7 @@ import 'package:pharmacy_mobile/tables/stocks.dart';
import 'package:pharmacy_mobile/widgets/button_widget.dart'; import 'package:pharmacy_mobile/widgets/button_widget.dart';
import 'package:pharmacy_mobile/widgets/datepicker_widget.dart'; import 'package:pharmacy_mobile/widgets/datepicker_widget.dart';
import 'package:pharmacy_mobile/widgets/dropdown_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/input_widget.dart';
import 'package:pharmacy_mobile/widgets/page_background_widget.dart'; import 'package:pharmacy_mobile/widgets/page_background_widget.dart';
import 'package:pharmacy_mobile/widgets/text_widget.dart'; import 'package:pharmacy_mobile/widgets/text_widget.dart';
@ -88,27 +89,30 @@ class _AddStockPageState extends State<AddStockPage> {
const Gap(32), const Gap(32),
const TextWidget(text: 'Add Stock'), const TextWidget(text: 'Add Stock'),
const Gap(16), const Gap(16),
Form( FormBorderWidget(
key: _formKey, color: 'green',
child: Center( child: Form(
child: Column( key: _formKey,
children: [ child: Center(
DropDownWidget( child: Column(
label: 'Medicine Name', children: [
list: _medicineList, DropDownWidget(
listTitle: 'medicine_name', label: 'Medicine Name',
onChanged: _updateMedicine), list: _medicineList,
const Gap(16), listTitle: 'medicine_name',
InputWidget(label: 'Quantity', controller: _quantityController), onChanged: _updateMedicine),
const Gap(16), const Gap(16),
DatePickerWidget( InputWidget(label: 'Quantity', controller: _quantityController),
label: 'Date Expiration', const Gap(16),
controller: _dateController, DatePickerWidget(
value: selectedDate, label: 'Date Expiration',
), controller: _dateController,
const Gap(16), value: selectedDate,
ButtonWidget(text: 'Add Stock', onPressed: saveStock) ),
], const Gap(16),
ButtonWidget(text: 'Add Stock', onPressed: saveStock)
],
),
), ),
), ),
) )

View file

@ -1,12 +1,8 @@
import 'dart:developer';
import 'package:gap/gap.dart'; import 'package:gap/gap.dart';
import 'package:flutter/material.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/tables/ref_types.dart';
import 'package:pharmacy_mobile/widgets/button_widget.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/input_widget.dart';
import 'package:pharmacy_mobile/widgets/page_background_widget.dart'; import 'package:pharmacy_mobile/widgets/page_background_widget.dart';
import 'package:pharmacy_mobile/widgets/text_widget.dart'; import 'package:pharmacy_mobile/widgets/text_widget.dart';
@ -47,17 +43,20 @@ class _AddTypePageState extends State<AddTypePage> {
const Gap(32), const Gap(32),
const TextWidget(text: 'Add Medicine Type'), const TextWidget(text: 'Add Medicine Type'),
const Gap(16), const Gap(16),
Form( FormBorderWidget(
key: _formKey, color: 'blue',
child: Center( child: Form(
child: Column( key: _formKey,
children: [ child: Center(
InputWidget(label: 'Type Name', controller: _typeController), child: Column(
const Gap(16), children: [
ButtonWidget(text: 'Save Type', onPressed: saveType) InputWidget(label: 'Type Name', controller: _typeController),
], const Gap(16),
), ButtonWidget(text: 'Save Type', onPressed: saveType)
)) ],
),
)),
)
], ],
), ),
), ),

View file

@ -40,29 +40,26 @@ class MainPage extends StatelessWidget {
const Gap(32), const Gap(32),
const TextWidget(text: 'Menu'), const TextWidget(text: 'Menu'),
const Gap(16), 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( MenuWidget(
icon: FontAwesomeIcons.squarePlus, icon: FontAwesomeIcons.squarePlus,
text: 'Add Medicine', text: 'Add Medicine',
onPressed: gotoAddMedicine, onPressed: gotoAddMedicine,
color: 'green'), color: 'green'),
const Gap(16), const Gap(16),
MenuWidget(
icon: FontAwesomeIcons.squarePlus,
text: 'Add Generics',
onPressed: gotoAddGenerics,
color: 'green'),
const Gap(16),
MenuWidget( MenuWidget(
icon: FontAwesomeIcons.squarePlus, icon: FontAwesomeIcons.squarePlus,
text: 'Add Stock', text: 'Add Stock',
onPressed: () => {context.push('/addstock')}, onPressed: () => {context.push('/addstock')},
color: 'green'), color: 'green'),
const Gap(16),
MenuWidget(
icon: FontAwesomeIcons.squarePlus,
text: 'Add Medicine Type',
onPressed: () => {context.push('/addtype')},
color: 'green'),
const Gap(32), const Gap(32),
MenuWidget( MenuWidget(
icon: FontAwesomeIcons.listCheck, icon: FontAwesomeIcons.listCheck,

View file

@ -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
}
}
}