update
This commit is contained in:
parent
b21ee2ee82
commit
ecccd4a9bf
16 changed files with 232 additions and 193 deletions
|
|
@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
|
|||
import 'package:pharmacy_mobile/auth/auth_gate.dart';
|
||||
import 'package:pharmacy_mobile/pages/add_category_page.dart';
|
||||
import 'package:pharmacy_mobile/pages/add_generics_page.dart';
|
||||
import 'package:pharmacy_mobile/pages/add_manufactorer.dart';
|
||||
import 'package:pharmacy_mobile/pages/add_manufacturer.dart';
|
||||
import 'package:pharmacy_mobile/pages/add_medicine_page.dart';
|
||||
import 'package:pharmacy_mobile/pages/add_stock_page.dart';
|
||||
import 'package:pharmacy_mobile/pages/add_type_page.dart';
|
||||
|
|
@ -57,7 +57,7 @@ final _router = GoRouter(
|
|||
GoRoute(
|
||||
name: 'addmanufactorer',
|
||||
path: '/addmanufactorer',
|
||||
builder: (context, state) => const AddManufactorerPage(),
|
||||
builder: (context, state) => const AddManufacturerPage(),
|
||||
),
|
||||
GoRoute(
|
||||
name: 'addmedicines',
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import 'package:gap/gap.dart';
|
|||
import 'package:internet_connection_checker/internet_connection_checker.dart';
|
||||
import 'package:pharmacy_mobile/functions/checkexisting_function.dart';
|
||||
import 'package:pharmacy_mobile/tables/ref_categories.dart';
|
||||
import 'package:pharmacy_mobile/widgets/button_widget.dart';
|
||||
import 'package:pharmacy_mobile/widgets/buttonwithprogress_widget.dart';
|
||||
import 'package:pharmacy_mobile/widgets/form_border_widget2.dart';
|
||||
import 'package:pharmacy_mobile/widgets/input_widget.dart';
|
||||
import 'package:pharmacy_mobile/widgets/page_background_widget.dart';
|
||||
|
|
@ -94,10 +94,15 @@ class _AddCategoryPageState extends State<AddCategoryPage> {
|
|||
children: [
|
||||
InputWidget(label: 'Category Name', controller: _categoryController),
|
||||
const Gap(32),
|
||||
if (_isLoading)
|
||||
const Center(child: CircularProgressIndicator(color: Colors.white))
|
||||
else
|
||||
ButtonWidget(text: 'Save Category', onPressed: _saveCategory)
|
||||
// if (_isLoading)
|
||||
// const Center(child: CircularProgressIndicator(color: Colors.white))
|
||||
// else
|
||||
// ButtonWidget(text: 'Save Category', onPressed: _saveCategory)
|
||||
ButtonWithProgressWidget(
|
||||
trigger: _isLoading,
|
||||
progressText: 'Adding Category',
|
||||
buttonText: 'Save',
|
||||
onPressed: _saveCategory)
|
||||
],
|
||||
),
|
||||
)),
|
||||
|
|
|
|||
|
|
@ -4,8 +4,9 @@ import 'package:internet_connection_checker/internet_connection_checker.dart';
|
|||
import 'package:pharmacy_mobile/functions/checkexisting_function.dart';
|
||||
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/buttonwithprogress_widget.dart';
|
||||
import 'package:pharmacy_mobile/widgets/dropdown_widget.dart';
|
||||
import 'package:pharmacy_mobile/widgets/dropdown_wrappermulti_widget.dart';
|
||||
import 'package:pharmacy_mobile/widgets/form_border_widget2.dart';
|
||||
import 'package:pharmacy_mobile/widgets/input_widget.dart';
|
||||
import 'package:pharmacy_mobile/widgets/page_background_widget.dart';
|
||||
|
|
@ -71,7 +72,7 @@ class _AddGenericsPageState extends State<AddGenericsPage> {
|
|||
_selectedCategory = category;
|
||||
}
|
||||
|
||||
void saveGeneric() async {
|
||||
void _saveGeneric() async {
|
||||
setState(() => _isLoading = true);
|
||||
|
||||
try {
|
||||
|
|
@ -153,47 +154,26 @@ class _AddGenericsPageState extends State<AddGenericsPage> {
|
|||
color: 'blue',
|
||||
child: Form(
|
||||
key: _formKey,
|
||||
child: Column(
|
||||
children: [
|
||||
InputWidget(label: 'Name', controller: _nameController),
|
||||
const Gap(16),
|
||||
if (_categoryList.isEmpty)
|
||||
const Column(
|
||||
children: [
|
||||
Gap(8),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
spacing: 16,
|
||||
children: [
|
||||
CircularProgressIndicator(color: Colors.white),
|
||||
TextWidget(
|
||||
text: 'Fetching Categories',
|
||||
size: 16,
|
||||
)
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
else
|
||||
Column(
|
||||
children: [
|
||||
DropDownWidget(
|
||||
label: 'Category',
|
||||
list: _categoryList,
|
||||
listTitle: 'category_name',
|
||||
onChanged: _updateCategory,
|
||||
// value: _selectedCategory,
|
||||
),
|
||||
const Gap(32),
|
||||
if (_isLoading)
|
||||
const Center(child: CircularProgressIndicator(color: Colors.white))
|
||||
else
|
||||
ButtonWidget(text: 'Add', onPressed: saveGeneric)
|
||||
],
|
||||
child: DropdownWrapperMultiWidget(list: _categoryList, text: 'List', children: [
|
||||
Column(
|
||||
children: [
|
||||
InputWidget(label: 'Name', controller: _nameController),
|
||||
const Gap(16),
|
||||
DropDownWidget(
|
||||
label: 'Category',
|
||||
list: _categoryList,
|
||||
listTitle: 'category_name',
|
||||
onChanged: _updateCategory,
|
||||
),
|
||||
],
|
||||
)),
|
||||
const Gap(32),
|
||||
ButtonWithProgressWidget(
|
||||
trigger: _isLoading,
|
||||
progressText: 'Adding Generics',
|
||||
buttonText: 'Save',
|
||||
onPressed: _saveGeneric)
|
||||
],
|
||||
),
|
||||
])),
|
||||
)
|
||||
],
|
||||
)),
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import 'package:internet_connection_checker/internet_connection_checker.dart';
|
|||
import 'package:pharmacy_mobile/functions/checkexisting_function.dart';
|
||||
import 'package:pharmacy_mobile/tables/ref_manufactorers.dart';
|
||||
import 'package:pharmacy_mobile/widgets/button_widget.dart';
|
||||
import 'package:pharmacy_mobile/widgets/buttonwithprogress_widget.dart';
|
||||
import 'package:pharmacy_mobile/widgets/form_border_widget2.dart';
|
||||
import 'package:pharmacy_mobile/widgets/input_widget.dart';
|
||||
import 'package:pharmacy_mobile/widgets/page_background_widget.dart';
|
||||
|
|
@ -12,14 +13,14 @@ import 'package:pharmacy_mobile/widgets/snackbar_widget.dart';
|
|||
import 'package:pharmacy_mobile/widgets/text_widget.dart';
|
||||
import 'package:pharmacy_mobile/widgets/title_widget.dart';
|
||||
|
||||
class AddManufactorerPage extends StatefulWidget {
|
||||
const AddManufactorerPage({super.key});
|
||||
class AddManufacturerPage extends StatefulWidget {
|
||||
const AddManufacturerPage({super.key});
|
||||
|
||||
@override
|
||||
State<AddManufactorerPage> createState() => _AddManufactorerPageState();
|
||||
State<AddManufacturerPage> createState() => _AddManufactorerPageState();
|
||||
}
|
||||
|
||||
class _AddManufactorerPageState extends State<AddManufactorerPage> {
|
||||
class _AddManufactorerPageState extends State<AddManufacturerPage> {
|
||||
final _formKey = GlobalKey<FormState>();
|
||||
final _nameController = TextEditingController();
|
||||
final _addressController = TextEditingController();
|
||||
|
|
@ -100,10 +101,15 @@ class _AddManufactorerPageState extends State<AddManufactorerPage> {
|
|||
const Gap(16),
|
||||
InputWidget(label: 'Address', controller: _addressController),
|
||||
const Gap(32),
|
||||
if (_isLoading)
|
||||
const Center(child: CircularProgressIndicator(color: Colors.white))
|
||||
else
|
||||
ButtonWidget(text: 'Save Manufactorer', onPressed: _saveManufactorer)
|
||||
// if (_isLoading)
|
||||
// const Center(child: CircularProgressIndicator(color: Colors.white))
|
||||
// else
|
||||
// ButtonWidget(text: 'Save Manufactorer', onPressed: _saveManufactorer)
|
||||
ButtonWithProgressWidget(
|
||||
trigger: _isLoading,
|
||||
progressText: 'Adding Manufacturer',
|
||||
buttonText: 'Save',
|
||||
onPressed: _saveManufactorer)
|
||||
],
|
||||
)))
|
||||
],
|
||||
|
|
@ -12,6 +12,7 @@ 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/buttonwithprogress_widget.dart';
|
||||
import 'package:pharmacy_mobile/widgets/dropdown_widget.dart';
|
||||
import 'package:pharmacy_mobile/widgets/dropdown_wrappermulti_widget.dart';
|
||||
import 'package:pharmacy_mobile/widgets/form_border_widget2.dart';
|
||||
|
|
@ -240,74 +241,69 @@ class _AddMedicinePageState extends State<AddMedicinePage> {
|
|||
color: 'green',
|
||||
child: Form(
|
||||
key: _formKey,
|
||||
child: Center(
|
||||
child: Column(
|
||||
children: [
|
||||
InputWidget(label: 'Name', controller: _nameController),
|
||||
const Gap(16),
|
||||
DropdownWrapperMultiWidget(list: _genericNameList, text: 'Data', children: [
|
||||
Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
|
||||
DropDownWidget(
|
||||
label: 'Generic Name',
|
||||
list: _genericNameList,
|
||||
listTitle: 'generic_name',
|
||||
onChanged: _updateGeneric,
|
||||
// value: _selectedGeneric,
|
||||
),
|
||||
const Gap(8),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 12),
|
||||
child: TextWidget(text: _selectedCategory, size: 18),
|
||||
),
|
||||
const Gap(16),
|
||||
DropDownWidget(
|
||||
label: 'Type',
|
||||
list: _typeList,
|
||||
listTitle: 'type_name',
|
||||
onChanged: _updateType,
|
||||
// value: _selectedType,
|
||||
),
|
||||
const Gap(16),
|
||||
DropDownWidget(
|
||||
label: 'Manufactorer',
|
||||
list: _manufactorerList,
|
||||
listTitle: 'manufactorer_name',
|
||||
onChanged: _updateManufactorer,
|
||||
// value: _selectedManufactorer,
|
||||
),
|
||||
const Gap(16),
|
||||
InputWidget(label: 'Barcode', controller: _barcodeController),
|
||||
ScanbarcodeWidget(onTap: _scanBarcode),
|
||||
const Gap(16),
|
||||
if (imageUrl.isNotEmpty)
|
||||
Center(
|
||||
child: ClipRRect(
|
||||
borderRadius:
|
||||
BorderRadius.circular(12), // Add your desired border radius here
|
||||
child: ImageWidget(
|
||||
imagePath: imageUrl,
|
||||
size: 250,
|
||||
measureByHeight: false,
|
||||
network: true,
|
||||
))
|
||||
// Image.network(imageUrl, fit: BoxFit.cover, width: 250, height: 250)),
|
||||
)
|
||||
else
|
||||
ButtonWidget(
|
||||
text: 'Add Image',
|
||||
onPressed: _addImage,
|
||||
outline: true,
|
||||
),
|
||||
const Gap(32),
|
||||
if (_isLoading)
|
||||
const Center(child: CircularProgressIndicator(color: Colors.white))
|
||||
else
|
||||
ButtonWidget(text: 'Save Medicine', onPressed: _saveMedicine)
|
||||
])
|
||||
]),
|
||||
],
|
||||
),
|
||||
)))
|
||||
child: DropdownWrapperMultiWidget(list: _genericNameList, text: 'Data', children: [
|
||||
Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
|
||||
InputWidget(label: 'Name', controller: _nameController),
|
||||
const Gap(16),
|
||||
DropDownWidget(
|
||||
label: 'Generic Name',
|
||||
list: _genericNameList,
|
||||
listTitle: 'generic_name',
|
||||
onChanged: _updateGeneric,
|
||||
),
|
||||
const Gap(8),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 12),
|
||||
child: 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),
|
||||
InputWidget(label: 'Barcode', controller: _barcodeController),
|
||||
ScanbarcodeWidget(onTap: _scanBarcode),
|
||||
const Gap(16),
|
||||
if (imageUrl.isNotEmpty)
|
||||
Center(
|
||||
child: ClipRRect(
|
||||
borderRadius: BorderRadius.circular(12), // Add your desired border radius here
|
||||
child: ImageWidget(
|
||||
imagePath: imageUrl,
|
||||
size: 250,
|
||||
measureByHeight: false,
|
||||
network: true,
|
||||
))
|
||||
// Image.network(imageUrl, fit: BoxFit.cover, width: 250, height: 250)),
|
||||
)
|
||||
else
|
||||
ButtonWidget(
|
||||
text: 'Add Image',
|
||||
onPressed: _addImage,
|
||||
outline: true,
|
||||
),
|
||||
const Gap(32),
|
||||
// if (_isLoading)
|
||||
// const Center(child: CircularProgressIndicator(color: Colors.white))
|
||||
// else
|
||||
// ButtonWidget(text: 'Save Medicine', onPressed: _saveMedicine)
|
||||
ButtonWithProgressWidget(
|
||||
trigger: _isLoading,
|
||||
progressText: 'Adding Medicine',
|
||||
buttonText: 'Save',
|
||||
onPressed: _saveMedicine)
|
||||
])
|
||||
])))
|
||||
]))));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import 'package:internet_connection_checker/internet_connection_checker.dart';
|
|||
import 'package:pharmacy_mobile/functions/checkexisting_function.dart';
|
||||
import 'package:pharmacy_mobile/tables/ref_types.dart';
|
||||
import 'package:pharmacy_mobile/widgets/button_widget.dart';
|
||||
import 'package:pharmacy_mobile/widgets/buttonwithprogress_widget.dart';
|
||||
import 'package:pharmacy_mobile/widgets/form_border_widget2.dart';
|
||||
import 'package:pharmacy_mobile/widgets/input_widget.dart';
|
||||
import 'package:pharmacy_mobile/widgets/page_background_widget.dart';
|
||||
|
|
@ -97,10 +98,15 @@ class _AddTypePageState extends State<AddTypePage> {
|
|||
children: [
|
||||
InputWidget(label: 'Type Name', controller: _typeController),
|
||||
const Gap(32),
|
||||
if (_isLoading)
|
||||
const Center(child: CircularProgressIndicator(color: Colors.white))
|
||||
else
|
||||
ButtonWidget(text: 'Save Type', onPressed: _saveType)
|
||||
// if (_isLoading)
|
||||
// const Center(child: CircularProgressIndicator(color: Colors.white))
|
||||
// else
|
||||
// ButtonWidget(text: 'Save Type', onPressed: _saveType)
|
||||
ButtonWithProgressWidget(
|
||||
trigger: _isLoading,
|
||||
progressText: 'Adding Type',
|
||||
buttonText: 'Save',
|
||||
onPressed: _saveType)
|
||||
],
|
||||
),
|
||||
)),
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import 'package:go_router/go_router.dart';
|
|||
import 'package:gap/gap.dart';
|
||||
import 'package:pharmacy_mobile/auth/auth_service.dart';
|
||||
import 'package:pharmacy_mobile/widgets/button_widget.dart';
|
||||
import 'package:pharmacy_mobile/widgets/buttonwithprogress_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';
|
||||
|
|
@ -151,10 +152,12 @@ class _LoginPageState extends State<LoginPage> {
|
|||
),
|
||||
const Gap(40),
|
||||
// TextButton(onPressed: () => {_signIn()}, child: const Text('Login'))
|
||||
if (_isLoading)
|
||||
const Center(child: CircularProgressIndicator(color: Color.fromRGBO(255, 255, 255, 1)))
|
||||
else
|
||||
ButtonWidget(text: 'Login', onPressed: _signIn)
|
||||
// if (_isLoading)
|
||||
// const Center(child: CircularProgressIndicator(color: Color.fromRGBO(255, 255, 255, 1)))
|
||||
// else
|
||||
// ButtonWidget(text: 'Login', onPressed: _signIn),
|
||||
ButtonWithProgressWidget(
|
||||
trigger: _isLoading, progressText: 'Logging In', buttonText: 'Login', onPressed: _signIn)
|
||||
],
|
||||
)),
|
||||
),
|
||||
|
|
|
|||
|
|
@ -52,8 +52,8 @@ class _MainPageState extends State<MainPage> {
|
|||
const Gap(16),
|
||||
MenuWidget(
|
||||
icon: FontAwesomeIcons.circlePlus,
|
||||
text: 'Add Manufactorer',
|
||||
description: 'Register manufactorer to the list',
|
||||
text: 'Add Manufacturer',
|
||||
description: 'Register manufacturer to the list',
|
||||
onPressed: () => {context.push('/addmanufactorer')},
|
||||
color: 'blue',
|
||||
),
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import 'package:gap/gap.dart';
|
|||
import 'package:internet_connection_checker/internet_connection_checker.dart';
|
||||
import 'package:pharmacy_mobile/auth/auth_service.dart';
|
||||
import 'package:pharmacy_mobile/widgets/button_widget.dart';
|
||||
import 'package:pharmacy_mobile/widgets/buttonwithprogress_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';
|
||||
|
|
@ -150,10 +151,15 @@ class _RegisterPageState extends State<RegisterPage> {
|
|||
),
|
||||
const Gap(40),
|
||||
// TextButton(onPressed: () => {_signIn()}, child: const Text('Login'))
|
||||
if (_isLoading)
|
||||
const Center(child: CircularProgressIndicator(color: Colors.white))
|
||||
else
|
||||
ButtonWidget(text: 'Create Account', onPressed: _signUp)
|
||||
// if (_isLoading)
|
||||
// const Center(child: CircularProgressIndicator(color: Colors.white))
|
||||
// else
|
||||
// ButtonWidget(text: 'Create Account', onPressed: _signUp)
|
||||
ButtonWithProgressWidget(
|
||||
trigger: _isLoading,
|
||||
progressText: 'Registering',
|
||||
buttonText: 'Register',
|
||||
onPressed: _signUp)
|
||||
],
|
||||
)),
|
||||
),
|
||||
|
|
|
|||
37
lib/widgets/buttonwithprogress_widget.dart
Normal file
37
lib/widgets/buttonwithprogress_widget.dart
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:gap/gap.dart';
|
||||
import 'package:pharmacy_mobile/widgets/button_widget.dart';
|
||||
import 'package:pharmacy_mobile/widgets/text_widget.dart';
|
||||
|
||||
class ButtonWithProgressWidget extends StatelessWidget {
|
||||
final bool trigger;
|
||||
final String progressText;
|
||||
final String buttonText;
|
||||
final VoidCallback onPressed;
|
||||
|
||||
const ButtonWithProgressWidget(
|
||||
{super.key,
|
||||
required this.trigger,
|
||||
required this.progressText,
|
||||
required this.buttonText,
|
||||
required this.onPressed});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
if (trigger) {
|
||||
return Center(
|
||||
child: Column(
|
||||
children: [
|
||||
const CircularProgressIndicator(color: Color.fromRGBO(255, 255, 255, 1)),
|
||||
const Gap(16),
|
||||
TextWidget(
|
||||
text: progressText,
|
||||
size: 12,
|
||||
)
|
||||
],
|
||||
));
|
||||
} else {
|
||||
return ButtonWidget(text: buttonText, onPressed: onPressed);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -20,13 +20,14 @@ class DropdownWrapperWidget extends StatelessWidget {
|
|||
? Column(
|
||||
children: [
|
||||
const Gap(8),
|
||||
Row(
|
||||
Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
spacing: 16,
|
||||
children: [
|
||||
const CircularProgressIndicator(color: Color.fromRGBO(255, 255, 255, 1)),
|
||||
TextWidget(text: 'Fetching $text', size: 16)
|
||||
const Gap(4),
|
||||
TextWidget(text: 'Fetching $text', size: 14)
|
||||
],
|
||||
),
|
||||
],
|
||||
|
|
|
|||
|
|
@ -19,16 +19,15 @@ class DropdownWrapperMultiWidget extends StatelessWidget {
|
|||
return (list.isEmpty)
|
||||
? Column(
|
||||
children: [
|
||||
const Gap(8),
|
||||
Row(
|
||||
Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
spacing: 16,
|
||||
children: [
|
||||
const CircularProgressIndicator(color: Color.fromRGBO(255, 255, 255, 1)),
|
||||
const Gap(16),
|
||||
TextWidget(
|
||||
text: 'Fetching $text',
|
||||
size: 16,
|
||||
size: 14,
|
||||
)
|
||||
],
|
||||
),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue