From 6a6b5f45fa8d6be430e66e428f51bbf485182612 Mon Sep 17 00:00:00 2001 From: Patrick Alvin Alcala Date: Fri, 28 Feb 2025 16:06:12 +0800 Subject: [PATCH] update --- assets/images/profile.webp | Bin 0 -> 12056 bytes .../customer_pages/customer_cart_page.dart | 11 +- .../customer_pages/customer_main_page.dart | 128 ++++++------ .../customer_pages/customer_profile_page.dart | 10 +- .../customer_pages/customer_search_page.dart | 190 +++++++++--------- lib/pages/index_page.dart | 50 +---- lib/pages/list_stocks_page.dart | 1 - lib/tables/stocks.dart | 2 - lib/widgets/consultation_widget.dart | 4 +- .../customer_pagebackground_widget.dart | 53 +++++ lib/widgets/customer_title_widget.dart | 25 +++ pubspec.yaml | 1 + 12 files changed, 251 insertions(+), 224 deletions(-) create mode 100644 assets/images/profile.webp create mode 100644 lib/widgets/customer_pagebackground_widget.dart create mode 100644 lib/widgets/customer_title_widget.dart diff --git a/assets/images/profile.webp b/assets/images/profile.webp new file mode 100644 index 0000000000000000000000000000000000000000..449bba473046de1489c829e9d55b0fd70b7ea5c1 GIT binary patch literal 12056 zcmaKQV{|56x9t<#PRHojw%M`Gj@hwo+fF*RZQHiGV;j%S`<^@QcYd66_o%8pYpyw0 z?Y(wYjT)sSB`%K4005|q2`i{6aB9E;0073X{SM@xO-e*WArJKH6aboMZEWKRE(ieF z*g82VNeB~ZXlfBbod7@qcmOB>Er7_-*wJ1{K|$sp_5a)+mjNLEL>B1&$@M>L{#O>^ zr-`F6002Vtr4Tf>cX0Z`249%n)ye)Joc4v$jm-^ze&Nb5OzZG9z%RV|4{!8e`1~Ji z_AmZ-Qs@pUN+Mr#L;vE5%>ElT`fu3S+`;Bc!}_Hm`)OnQl^;~&zwpn0u-8A>#@hL7 zZ2z`@W(aR$tE&9flYQ-Y011E;Ko+0?AOaWxoBz&~s7rTJ?AsjZ_a3-iAe2)r-=0I>}O-jM?UP>BG* zM;s9NmJbAe6aWBVn*czs?SK4sc>n+06+=?0GbE?!x^Ol04<>a0QQ=_ zp@ZSS*8%%Ff|{BF0JkLo0D>j}fHn&Nz-s?j-M(V~!~umX0D#I@tz@PEfbOPe?{VauM}wwb4UuHXsx3-|W2kcuqb5C`=&7ezfD&Cpn}k zgp7xOd6gGQErkb8J{;d6n3rkOEW0MB>3)2NgCi8Y|71Me#71ge$)R`3g!5hKtG3%{ zMwhC$IRgs(WM;X8bs4rdhBQ&bP>g5FQ7h_*roSwZ$3a0eSZi)RvMGA&Nhn8Q`97q& zC(1O&90Al9xP!W4k$h5^LE{h~1Sc}zV1F-TH@(Rg5heS)0s=>+L??$1ys*eM71?Zb zF)cbfGIs!sp7tdB7rbh|?|&NqR-HzZlNgzj6#UI@FnroyXxFowvc|4|C}{miFc*2> z#|+f}P`gyF7m3L?amlh8ps=;^Zqvka2|Kyq?I?w>Q?XiJYd?j;ShB9Mn%Ezc36v@f zjkk4nV;-cm`Q)sA%`eooO$q5!YQbIdX#JbI5N$ZBQuBR@QPG>%1%4AUG8+f?^@6o2 zO3#GwlsI3qg^p(q@?aeid?@s{iRWrJVz&&U5M9oKNqefYGI) zeMd{)%(s#>#+A>iQ>Q(e^YWte-uB29Q6jg$PQQYlTfv-xoxsM|#-MHuGpBM}mMGy^ zf+3|EL8m+EQ*aXbs zLis4WyaC|j+LBY&!^WsX-!l4%TD=zTtl1 zeab-kj7Z2Q|6v1uus3?fsxN9!AkQoJR_6cUc5c%i3*R|HD$n9=V8CDfA%oH9UF|J{ z()U??$KZ+dNocj>z$Ga7>UyD`0gAdlS>Xf~wra;K{esD?7W;W9wdh~ipQ__Q$u;pV znJgmhc_3DfZgd)t)W*TaN%cPB?w2#M?z#vCEp0W!lr1#>IA&)pi-zcs%XE*N>_RY* zEvVLXjrCLvSEH;yw}hN>oYOB5(0H*ee;&a8KJ*;+PO!heDlsXG&wu!tZ%NER*A>VY z&}(z?%~m3q^BVr~8=0DCPwgY_jldYipmJE{3cn$t%0A5*Qa{emWg6ewTkad41Gslb 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 literal 0 HcmV?d00001 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