From d4706f5f2ea01f1e6506d10e2bda3ac2de10ad47 Mon Sep 17 00:00:00 2001 From: Patrick Alvin Alcala Date: Mon, 17 Feb 2025 17:08:14 +0800 Subject: [PATCH] update --- assets/ofa_logo.webp | Bin 3956 -> 3920 bytes lib/auth/auth_gate.dart | 12 ++++++- lib/main.dart | 12 +++---- ...d_category.dart => add_category_page.dart} | 0 ...d_generics.dart => add_generics_page.dart} | 0 ...d_medicine.dart => add_medicine_page.dart} | 0 .../{add_stock.dart => add_stock_page.dart} | 0 .../{add_type.dart => add_type_page.dart} | 0 lib/pages/customer_page.dart | 34 +++++++++++++++++- ...lete_stock.dart => delete_stock_page.dart} | 0 lib/widgets/button_widget.dart | 2 +- lib/widgets/customer_menu_widget.dart | 34 ++++++++++++++++++ lib/widgets/menu_widget.dart | 2 +- 13 files changed, 86 insertions(+), 10 deletions(-) rename lib/pages/{add_category.dart => add_category_page.dart} (100%) rename lib/pages/{add_generics.dart => add_generics_page.dart} (100%) rename lib/pages/{add_medicine.dart => add_medicine_page.dart} (100%) rename lib/pages/{add_stock.dart => add_stock_page.dart} (100%) rename lib/pages/{add_type.dart => add_type_page.dart} (100%) rename lib/pages/{delete_stock.dart => delete_stock_page.dart} (100%) create mode 100644 lib/widgets/customer_menu_widget.dart diff --git a/assets/ofa_logo.webp b/assets/ofa_logo.webp index a585f932ef7f5afb70c137b72c9c3ac824ff2fde..8da1188779d3f8463c8203939f0ad85c20d76303 100644 GIT binary patch delta 3275 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 createState() => _CustomerPageState(); +} + +class _CustomerPageState extends State { + final _authService = AuthService(); + + void sample() {} + + void signOut() async { + // ignore: use_build_context_synchronously + await _authService.signOut().then((_) => {context.go('/'), showNotification(context, 'Logged Out', true)}); + } + @override Widget build(BuildContext context) { return PopScope( canPop: false, child: Scaffold( + resizeToAvoidBottomInset: false, body: SingleChildScrollView( child: PageBackgroundWidget( height: MediaQuery.of(context).size.height + 400, + page: 'menu', child: Center( child: Column( children: [ @@ -23,6 +45,16 @@ class CustomerPage extends StatelessWidget { const Gap(32), const TextWidget(text: 'Menu'), const Gap(16), + const MenuWidget(icon: FontAwesomeIcons.kitMedical, text: 'Buy Medicine', color: 'blue'), + const Gap(32), + ButtonWidget( + text: 'Logout', + onPressed: signOut, + ) + // CustomerMenuWidget( + // onHomePressed: sample, + // onProfilePressed: sample, + // ) ], ))), ), diff --git a/lib/pages/delete_stock.dart b/lib/pages/delete_stock_page.dart similarity index 100% rename from lib/pages/delete_stock.dart rename to lib/pages/delete_stock_page.dart diff --git a/lib/widgets/button_widget.dart b/lib/widgets/button_widget.dart index 30cb530..5006f7a 100644 --- a/lib/widgets/button_widget.dart +++ b/lib/widgets/button_widget.dart @@ -26,7 +26,7 @@ class ButtonWidget extends StatelessWidget { : ElevatedButton.styleFrom( foregroundColor: const Color.fromRGBO(0, 0, 0, 1), // text color backgroundColor: const Color.fromRGBO(198, 133, 232, 1), // background color - side: const BorderSide(color: Color.fromRGBO(79, 51, 94, 1)), // border color + side: const BorderSide(color: Color.fromRGBO(79, 51, 94, 0.4)), // border color shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(20), // rounded corners ), diff --git a/lib/widgets/customer_menu_widget.dart b/lib/widgets/customer_menu_widget.dart new file mode 100644 index 0000000..d9b2b0a --- /dev/null +++ b/lib/widgets/customer_menu_widget.dart @@ -0,0 +1,34 @@ +import 'package:flutter/material.dart'; + +class CustomerMenuWidget extends StatelessWidget { + final VoidCallback? onHomePressed; + final VoidCallback? onProfilePressed; + const CustomerMenuWidget({super.key, this.onHomePressed, this.onProfilePressed}); + + @override + Widget build(BuildContext context) { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + GestureDetector( + onTap: onHomePressed, + child: Container( + color: Colors.white, + alignment: Alignment.center, + padding: EdgeInsets.all(24), + child: Text('Home', style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold)), + ), + ), + GestureDetector( + onTap: onProfilePressed, + child: Container( + color: Colors.white, + alignment: Alignment.center, + padding: EdgeInsets.all(24), + child: Text('Profile', style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold)), + ), + ), + ], + ); + } +} diff --git a/lib/widgets/menu_widget.dart b/lib/widgets/menu_widget.dart index 287beac..53955be 100644 --- a/lib/widgets/menu_widget.dart +++ b/lib/widgets/menu_widget.dart @@ -24,7 +24,7 @@ class MenuWidget extends StatelessWidget { width: MediaQuery.of(context).size.width - 96, padding: const EdgeInsets.only(top: 16, bottom: 16), decoration: BoxDecoration( - borderRadius: BorderRadius.circular(12), + borderRadius: BorderRadius.circular(8), border: Border.all( color: color != null ? _getColorBasedOnString(color ?? '') : const Color.fromRGBO(255, 255, 255, 0.6), width: 2),