diff --git a/assets/images/profile.webp b/assets/images/profile.webp new file mode 100644 index 0000000..449bba4 Binary files /dev/null and b/assets/images/profile.webp differ diff --git a/lib/pages/customer_pages/customer_cart_page.dart b/lib/pages/customer_pages/customer_cart_page.dart index 423a9f2..479b50c 100644 --- a/lib/pages/customer_pages/customer_cart_page.dart +++ b/lib/pages/customer_pages/customer_cart_page.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:gap/gap.dart'; -import 'package:pharmacy_mobile/widgets/page_background_widget.dart'; +import 'package:pharmacy_mobile/widgets/customer_pagebackground_widget.dart'; +import 'package:pharmacy_mobile/widgets/customer_title_widget.dart'; import 'package:pharmacy_mobile/widgets/text_widget.dart'; import 'package:pharmacy_mobile/widgets/title_widget.dart'; import 'package:animated_notch_bottom_bar/animated_notch_bottom_bar/animated_notch_bottom_bar.dart'; @@ -12,15 +13,11 @@ class CustomerCartPage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( - body: PageBackgroundWidget( + body: CustomerPagebackgroundWidget( child: Column( children: [ const Gap(96), - const TitleWidget( - firstTextSize: 14, - secondTextSize: 24, - logoSize: 90, - ), + const CustomerTitleWidget(), const Gap(32), const TextWidget(text: 'My Cart'), const Gap(16), diff --git a/lib/pages/customer_pages/customer_main_page.dart b/lib/pages/customer_pages/customer_main_page.dart index e64b6e7..d6b99fe 100644 --- a/lib/pages/customer_pages/customer_main_page.dart +++ b/lib/pages/customer_pages/customer_main_page.dart @@ -1,6 +1,8 @@ import 'package:flutter/material.dart'; import 'package:gap/gap.dart'; import 'package:pharmacy_mobile/widgets/consultation_widget.dart'; +import 'package:pharmacy_mobile/widgets/customer_pagebackground_widget.dart'; +import 'package:pharmacy_mobile/widgets/customer_title_widget.dart'; import 'package:pharmacy_mobile/widgets/logo_widget.dart'; import 'package:pharmacy_mobile/widgets/page_background_widget.dart'; import 'package:pharmacy_mobile/widgets/text_widget.dart'; @@ -17,73 +19,63 @@ class _CustomerMainPageState extends State { @override Widget build(BuildContext context) { return Scaffold( - body: PageBackgroundWidget( - dark: true, - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 16), - child: Column( - children: [ - const Gap(96), - const Row( - mainAxisAlignment: MainAxisAlignment.start, - children: [ - // Gap(16), - LogoWidget(size: 56), - ], - ), - const Gap(16), - const Row( - mainAxisAlignment: MainAxisAlignment.start, - children: [ - TextWidget( - text: 'Pharmacist Consultation', - title: true, - size: 14, - ), - ], - ), - const Gap(8), - ConsultationWidget( - name: 'Ofelia Franco-Alcala, RPh', - description: 'Pharmacist', - contact: '09205436095', - imagePath: 'assets/images/ofelia.webp', - color: 'pink', - margin: 32, - ), - const Gap(8), - ConsultationWidget( - name: 'Pamela Claire Alcala, RPh', - description: 'Pharmacist', - contact: '09205436095', - imagePath: 'assets/images/pamela.webp', - color: 'pink', - margin: 32, - ), - const Gap(16), - const Row( - mainAxisAlignment: MainAxisAlignment.start, - children: [ - TextWidget( - text: 'Doctor Consultation', - title: true, - size: 14, - ), - ], - ), - const Gap(8), - ConsultationWidget( - name: 'Floherna Franco-Diccion, PhD', - description: 'Physician', - contact: '09205436095', - imagePath: 'assets/ph_logo.webp', - color: 'yellow', - margin: 32, - ), - // const Gap(32), - // ButtonWidget(text: 'Log Out', onPressed: signOut) - ], - ), - ))); + body: CustomerPagebackgroundWidget( + child: Column( + children: [ + const Gap(96), + const CustomerTitleWidget(), + const Gap(16), + const Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + TextWidget( + text: 'Pharmacist Consultation', + title: true, + size: 14, + ), + ], + ), + const Gap(8), + ConsultationWidget( + name: 'Ofelia Franco-Alcala, RPh', + description: 'Pharmacist', + contact: '09205436095', + imagePath: 'assets/images/ofelia.webp', + color: 'pink', + margin: 32, + ), + const Gap(8), + ConsultationWidget( + name: 'Pamela Claire Alcala, RPh', + description: 'Pharmacist', + contact: '09205436095', + imagePath: 'assets/images/pamela.webp', + color: 'pink', + margin: 32, + ), + const Gap(16), + const Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + TextWidget( + text: 'Doctor Consultation', + title: true, + size: 14, + ), + ], + ), + const Gap(8), + ConsultationWidget( + name: 'Floherna Franco-Diccion, PhD', + description: 'Physician', + contact: '09205436095', + imagePath: 'assets/images/profile.webp', + color: 'blue', + margin: 32, + ), + // const Gap(32), + // ButtonWidget(text: 'Log Out', onPressed: signOut) + ], + ))); } } diff --git a/lib/pages/customer_pages/customer_profile_page.dart b/lib/pages/customer_pages/customer_profile_page.dart index ef86b31..b2d8814 100644 --- a/lib/pages/customer_pages/customer_profile_page.dart +++ b/lib/pages/customer_pages/customer_profile_page.dart @@ -3,6 +3,8 @@ import 'package:gap/gap.dart'; import 'package:go_router/go_router.dart'; import 'package:pharmacy_mobile/auth/auth_service.dart'; import 'package:pharmacy_mobile/widgets/button_widget.dart'; +import 'package:pharmacy_mobile/widgets/customer_pagebackground_widget.dart'; +import 'package:pharmacy_mobile/widgets/customer_title_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'; @@ -23,17 +25,13 @@ class CustomerProfilePage extends StatelessWidget { } return Scaffold( - body: PageBackgroundWidget( + body: CustomerPagebackgroundWidget( child: Column( children: [ Column( children: [ const Gap(96), - const TitleWidget( - firstTextSize: 14, - secondTextSize: 24, - logoSize: 90, - ), + const CustomerTitleWidget(), const Gap(32), const TextWidget(text: 'My Profile'), const Gap(16), diff --git a/lib/pages/customer_pages/customer_search_page.dart b/lib/pages/customer_pages/customer_search_page.dart index 344d8b7..e01be8b 100644 --- a/lib/pages/customer_pages/customer_search_page.dart +++ b/lib/pages/customer_pages/customer_search_page.dart @@ -2,6 +2,8 @@ import 'package:flutter/material.dart'; import 'package:gap/gap.dart'; import 'package:pharmacy_mobile/tables/stocks.dart'; import 'package:pharmacy_mobile/tables/storage.dart'; +import 'package:pharmacy_mobile/widgets/customer_pagebackground_widget.dart'; +import 'package:pharmacy_mobile/widgets/customer_title_widget.dart'; import 'package:pharmacy_mobile/widgets/input_widget.dart'; import 'package:pharmacy_mobile/widgets/item_card_widget.dart'; import 'package:pharmacy_mobile/widgets/logo_widget.dart'; @@ -53,7 +55,7 @@ class _CustomerSearchPageState extends State { // } // } - void _filterList() {} + // void _filterList() {} void autoRun() async { await _getAllStocks(); @@ -79,107 +81,99 @@ class _CustomerSearchPageState extends State { const double imageSize = 180; return Scaffold( - body: PageBackgroundWidget( - dark: true, - // height: MediaQuery.of(context).size.height * 2, + body: CustomerPagebackgroundWidget( child: Column( + children: [ + Column( + children: [ + const Gap(96), + const CustomerTitleWidget(), + const Gap(8), + Container( + padding: const EdgeInsets.only(left: 64, right: 64), + child: Column( + children: [ + InputWidget( + label: '', + controller: _searchController, + placeholder: 'Search for medicine', + ), + // const Gap(8), + // ButtonWidget( + // text: 'Search', + // onPressed: _filterList, + // width: 160, + // ) + ], + ), + ), + const Gap(32), + // Center( + // child: imageUrl.isNotEmpty + // ? ClipRRect( + // borderRadius: BorderRadius.circular(12), // Add your desired border radius here + // child: Image.network(imageUrl, + // fit: BoxFit.cover, + // width: 250, + // height: 250, + // cacheWidth: (250 * MediaQuery.of(context).devicePixelRatio).round())) + // : const CircularProgressIndicator( + // color: Colors.white, + // strokeWidth: 4, + // padding: EdgeInsets.all(8), + // ), + // ) + Column( children: [ - Column( - children: [ - const Gap(96), - const Row( - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Gap(16), - LogoWidget(size: 56), - ], - ), - const Gap(8), - Container( - padding: const EdgeInsets.only(left: 64, right: 64), - child: Column( - children: [ - InputWidget( - label: '', - controller: _searchController, - placeholder: 'Search for medicine', - ), - // const Gap(8), - // ButtonWidget( - // text: 'Search', - // onPressed: _filterList, - // width: 160, - // ) - ], + Padding( + padding: const EdgeInsets.fromLTRB(0, 8, 0, 8), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + ItemCardWidget( + imageUrl: imageUrl, + text: 'sample', + price: 500, + quantity: 15, ), - ), - const Gap(32), - // Center( - // child: imageUrl.isNotEmpty - // ? ClipRRect( - // borderRadius: BorderRadius.circular(12), // Add your desired border radius here - // child: Image.network(imageUrl, - // fit: BoxFit.cover, - // width: 250, - // height: 250, - // cacheWidth: (250 * MediaQuery.of(context).devicePixelRatio).round())) - // : const CircularProgressIndicator( - // color: Colors.white, - // strokeWidth: 4, - // padding: EdgeInsets.all(8), - // ), - // ) - Column( - children: [ - Padding( - padding: const EdgeInsets.fromLTRB(0, 8, 0, 8), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - ItemCardWidget( - imageUrl: imageUrl, - text: 'sample', - price: 500, - quantity: 15, - ), - ItemCardWidget( - imageUrl: imageUrl, - text: 'sample', - price: 20, - quantity: 85, - ), - ], - ), - ) - ], - ), - Column( - children: [ - Padding( - padding: const EdgeInsets.fromLTRB(0, 8, 0, 8), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - ItemCardWidget( - imageUrl: imageUrl, - text: 'sample', - price: 500, - quantity: 15, - ), - ItemCardWidget( - imageUrl: imageUrl, - text: 'sample', - price: 20, - quantity: 85, - ), - ], - ), - ) - ], - ) - ], + ItemCardWidget( + imageUrl: imageUrl, + text: 'sample', + price: 20, + quantity: 85, + ), + ], + ), ) ], - ))); + ), + Column( + children: [ + Padding( + padding: const EdgeInsets.fromLTRB(0, 8, 0, 8), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + ItemCardWidget( + imageUrl: imageUrl, + text: 'sample', + price: 500, + quantity: 15, + ), + ItemCardWidget( + imageUrl: imageUrl, + text: 'sample', + price: 20, + quantity: 85, + ), + ], + ), + ) + ], + ) + ], + ) + ], + ))); } } diff --git a/lib/pages/index_page.dart b/lib/pages/index_page.dart index 73ae1fa..2745393 100644 --- a/lib/pages/index_page.dart +++ b/lib/pages/index_page.dart @@ -3,7 +3,6 @@ import 'package:go_router/go_router.dart'; import 'package:gap/gap.dart'; import 'package:pharmacy_mobile/widgets/button_widget.dart'; import 'package:pharmacy_mobile/widgets/image_widget.dart'; -import 'package:pharmacy_mobile/widgets/logo_widget.dart'; import 'package:pharmacy_mobile/widgets/page_background_widget.dart'; import 'package:pharmacy_mobile/widgets/slogan_widget.dart'; import 'package:pharmacy_mobile/widgets/text_widget.dart'; @@ -46,46 +45,17 @@ class IndexPage extends StatelessWidget { const SloganWidget(), const Gap(32), const MaxGap(500), - const Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - TextWidget( - text: 'Copyright © 2025 -', - size: 10, - bold: true, - ), - Gap(4), - LogoWidget(size: 28), - Gap(4), - TextWidget( - text: 'Ofelia Franco-Alcala Pharmacy', - size: 10, - bold: true, - ), - ], + const TextWidget( + text: 'Copyright © 2025 - Ofelia Franco-Alcala Pharmacy', + size: 10, ), - const Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - TextWidget( - text: 'Developed By:', - size: 8, - opacity: 0.8, - ), - Gap(4), - ImageWidget( - imagePath: 'assets/pat-alcala_logo.webp', - size: 16, - measureByHeight: true, - ), - Gap(4), - TextWidget( - text: 'Pat Alcala', - size: 8, - opacity: 0.8, - ), - ], - ) + const Gap(4), + const TextWidget( + text: 'Developed By: Pat Alcala', + size: 8, + opacity: 0.8, + ), + const Gap(8) ], ), )); diff --git a/lib/pages/list_stocks_page.dart b/lib/pages/list_stocks_page.dart index 9ead477..be49ceb 100644 --- a/lib/pages/list_stocks_page.dart +++ b/lib/pages/list_stocks_page.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import 'package:gap/gap.dart'; import 'package:intl/intl.dart'; import 'package:pharmacy_mobile/tables/stocks.dart'; -import 'package:pharmacy_mobile/tables/storage.dart'; import 'package:pharmacy_mobile/widgets/datatable_widget.dart'; import 'package:pharmacy_mobile/widgets/page_background_widget.dart'; import 'package:pharmacy_mobile/widgets/text_widget.dart'; diff --git a/lib/tables/stocks.dart b/lib/tables/stocks.dart index 1f5013c..97f6b0b 100644 --- a/lib/tables/stocks.dart +++ b/lib/tables/stocks.dart @@ -1,5 +1,3 @@ -import 'dart:developer'; - import 'package:supabase_flutter/supabase_flutter.dart'; import 'package:uuid/uuid.dart'; diff --git a/lib/widgets/consultation_widget.dart b/lib/widgets/consultation_widget.dart index a1356fc..738c127 100644 --- a/lib/widgets/consultation_widget.dart +++ b/lib/widgets/consultation_widget.dart @@ -71,11 +71,11 @@ class ConsultationWidget extends StatelessWidget { child: Row( mainAxisAlignment: MainAxisAlignment.start, children: [ - const Gap(32), + const Gap(24), ClipRRect( borderRadius: BorderRadius.circular(12), // Adjust the radius as needed child: - Image.asset(imagePath, width: 80, cacheWidth: (80 * MediaQuery.of(context).devicePixelRatio).round()), + Image.asset(imagePath, width: 76, cacheWidth: (76 * MediaQuery.of(context).devicePixelRatio).round()), ), const Gap(24), Column( diff --git a/lib/widgets/customer_pagebackground_widget.dart b/lib/widgets/customer_pagebackground_widget.dart new file mode 100644 index 0000000..e1829ef --- /dev/null +++ b/lib/widgets/customer_pagebackground_widget.dart @@ -0,0 +1,53 @@ +import 'package:flutter/material.dart'; + +class CustomerPagebackgroundWidget extends StatelessWidget { + final Widget child; + final String? page; + final double? height; + + const CustomerPagebackgroundWidget({ + super.key, + required this.child, + this.page, + this.height, + }); + + @override + Widget build(BuildContext context) { + return SingleChildScrollView( + scrollDirection: Axis.vertical, + child: Container( + alignment: Alignment.center, + height: height ?? MediaQuery.of(context).size.height + 200, + decoration: BoxDecoration( + image: DecorationImage( + image: AssetImage( + page == 'login' + ? 'assets/login_background.webp' + : page == 'register' + ? 'assets/register_background.webp' + : page == 'menu' + ? 'assets/menu_background.webp' + : 'assets/background.webp', + ), + fit: BoxFit.cover, // Ensures the background covers the entire container + alignment: Alignment.center, + opacity: 0.1, // Adjusts the opacity as needed + ), + gradient: RadialGradient( + tileMode: TileMode.clamp, + colors: [ + Color.fromRGBO(19, 8, 26, 1), + Color.fromRGBO(43, 22, 60, 1), + ], + ), + ), + child: Center( + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 16), + child: child, + ), + )), + ); + } +} diff --git a/lib/widgets/customer_title_widget.dart b/lib/widgets/customer_title_widget.dart new file mode 100644 index 0000000..be59344 --- /dev/null +++ b/lib/widgets/customer_title_widget.dart @@ -0,0 +1,25 @@ +import 'package:flutter/material.dart'; +import 'package:gap/gap.dart'; +import 'package:pharmacy_mobile/widgets/logo_widget.dart'; +import 'package:pharmacy_mobile/widgets/text_widget.dart'; + +class CustomerTitleWidget extends StatelessWidget { + const CustomerTitleWidget({super.key}); + + @override + Widget build(BuildContext context) { + return const Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + LogoWidget(size: 56), + Gap(16), + TextWidget( + text: 'Ofelia Franco-Alcala Pharmacy', + size: 16, + bold: true, + title: true, + ) + ], + ); + } +} diff --git a/pubspec.yaml b/pubspec.yaml index d61d8c5..b7d6ed2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -54,3 +54,4 @@ flutter: - assets/images/ofelia.webp - assets/images/pamela.webp - assets/pat-alcala_logo.webp + - assets/images/profile.webp