This commit is contained in:
Patrick Alvin Alcala 2025-02-28 16:06:12 +08:00
parent 3d52237e53
commit 6a6b5f45fa
12 changed files with 251 additions and 224 deletions

BIN
assets/images/profile.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View file

@ -1,6 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:gap/gap.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/text_widget.dart';
import 'package:pharmacy_mobile/widgets/title_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'; import 'package:animated_notch_bottom_bar/animated_notch_bottom_bar/animated_notch_bottom_bar.dart';
@ -12,15 +13,11 @@ class CustomerCartPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
body: PageBackgroundWidget( body: CustomerPagebackgroundWidget(
child: Column( child: Column(
children: [ children: [
const Gap(96), const Gap(96),
const TitleWidget( const CustomerTitleWidget(),
firstTextSize: 14,
secondTextSize: 24,
logoSize: 90,
),
const Gap(32), const Gap(32),
const TextWidget(text: 'My Cart'), const TextWidget(text: 'My Cart'),
const Gap(16), const Gap(16),

View file

@ -1,6 +1,8 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:gap/gap.dart'; import 'package:gap/gap.dart';
import 'package:pharmacy_mobile/widgets/consultation_widget.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/logo_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';
@ -17,73 +19,63 @@ class _CustomerMainPageState extends State<CustomerMainPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
body: PageBackgroundWidget( body: CustomerPagebackgroundWidget(
dark: true, child: Column(
child: Padding( children: [
padding: const EdgeInsets.symmetric(horizontal: 16), const Gap(96),
child: Column( const CustomerTitleWidget(),
children: [ const Gap(16),
const Gap(96), const Row(
const Row( mainAxisAlignment: MainAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start, children: [
children: [ TextWidget(
// Gap(16), text: 'Pharmacist Consultation',
LogoWidget(size: 56), title: true,
], size: 14,
), ),
const Gap(16), ],
const Row( ),
mainAxisAlignment: MainAxisAlignment.start, const Gap(8),
children: [ ConsultationWidget(
TextWidget( name: 'Ofelia Franco-Alcala, RPh',
text: 'Pharmacist Consultation', description: 'Pharmacist',
title: true, contact: '09205436095',
size: 14, imagePath: 'assets/images/ofelia.webp',
), color: 'pink',
], margin: 32,
), ),
const Gap(8), const Gap(8),
ConsultationWidget( ConsultationWidget(
name: 'Ofelia Franco-Alcala, RPh', name: 'Pamela Claire Alcala, RPh',
description: 'Pharmacist', description: 'Pharmacist',
contact: '09205436095', contact: '09205436095',
imagePath: 'assets/images/ofelia.webp', imagePath: 'assets/images/pamela.webp',
color: 'pink', color: 'pink',
margin: 32, margin: 32,
), ),
const Gap(8), const Gap(16),
ConsultationWidget( const Row(
name: 'Pamela Claire Alcala, RPh', mainAxisAlignment: MainAxisAlignment.start,
description: 'Pharmacist', children: [
contact: '09205436095', TextWidget(
imagePath: 'assets/images/pamela.webp', text: 'Doctor Consultation',
color: 'pink', title: true,
margin: 32, size: 14,
), ),
const Gap(16), ],
const Row( ),
mainAxisAlignment: MainAxisAlignment.start, const Gap(8),
children: [ ConsultationWidget(
TextWidget( name: 'Floherna Franco-Diccion, PhD',
text: 'Doctor Consultation', description: 'Physician',
title: true, contact: '09205436095',
size: 14, imagePath: 'assets/images/profile.webp',
), color: 'blue',
], margin: 32,
), ),
const Gap(8), // const Gap(32),
ConsultationWidget( // ButtonWidget(text: 'Log Out', onPressed: signOut)
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)
],
),
)));
} }
} }

View file

@ -3,6 +3,8 @@ import 'package:gap/gap.dart';
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
import 'package:pharmacy_mobile/auth/auth_service.dart'; import 'package:pharmacy_mobile/auth/auth_service.dart';
import 'package:pharmacy_mobile/widgets/button_widget.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/page_background_widget.dart';
import 'package:pharmacy_mobile/widgets/snackbar_widget.dart'; import 'package:pharmacy_mobile/widgets/snackbar_widget.dart';
import 'package:pharmacy_mobile/widgets/text_widget.dart'; import 'package:pharmacy_mobile/widgets/text_widget.dart';
@ -23,17 +25,13 @@ class CustomerProfilePage extends StatelessWidget {
} }
return Scaffold( return Scaffold(
body: PageBackgroundWidget( body: CustomerPagebackgroundWidget(
child: Column( child: Column(
children: [ children: [
Column( Column(
children: [ children: [
const Gap(96), const Gap(96),
const TitleWidget( const CustomerTitleWidget(),
firstTextSize: 14,
secondTextSize: 24,
logoSize: 90,
),
const Gap(32), const Gap(32),
const TextWidget(text: 'My Profile'), const TextWidget(text: 'My Profile'),
const Gap(16), const Gap(16),

View file

@ -2,6 +2,8 @@ import 'package:flutter/material.dart';
import 'package:gap/gap.dart'; import 'package:gap/gap.dart';
import 'package:pharmacy_mobile/tables/stocks.dart'; import 'package:pharmacy_mobile/tables/stocks.dart';
import 'package:pharmacy_mobile/tables/storage.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/input_widget.dart';
import 'package:pharmacy_mobile/widgets/item_card_widget.dart'; import 'package:pharmacy_mobile/widgets/item_card_widget.dart';
import 'package:pharmacy_mobile/widgets/logo_widget.dart'; import 'package:pharmacy_mobile/widgets/logo_widget.dart';
@ -53,7 +55,7 @@ class _CustomerSearchPageState extends State<CustomerSearchPage> {
// } // }
// } // }
void _filterList() {} // void _filterList() {}
void autoRun() async { void autoRun() async {
await _getAllStocks(); await _getAllStocks();
@ -79,107 +81,99 @@ class _CustomerSearchPageState extends State<CustomerSearchPage> {
const double imageSize = 180; const double imageSize = 180;
return Scaffold( return Scaffold(
body: PageBackgroundWidget( body: CustomerPagebackgroundWidget(
dark: true,
// height: MediaQuery.of(context).size.height * 2,
child: Column( 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: [ children: [
Column( Padding(
children: [ padding: const EdgeInsets.fromLTRB(0, 8, 0, 8),
const Gap(96), child: Row(
const Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly,
mainAxisAlignment: MainAxisAlignment.start, children: [
children: [ ItemCardWidget(
Gap(16), imageUrl: imageUrl,
LogoWidget(size: 56), text: 'sample',
], price: 500,
), quantity: 15,
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,
// )
],
), ),
), ItemCardWidget(
const Gap(32), imageUrl: imageUrl,
// Center( text: 'sample',
// child: imageUrl.isNotEmpty price: 20,
// ? ClipRRect( quantity: 85,
// 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,
),
],
),
)
],
)
],
) )
], ],
))); ),
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,
),
],
),
)
],
)
],
)
],
)));
} }
} }

View file

@ -3,7 +3,6 @@ import 'package:go_router/go_router.dart';
import 'package:gap/gap.dart'; import 'package:gap/gap.dart';
import 'package:pharmacy_mobile/widgets/button_widget.dart'; import 'package:pharmacy_mobile/widgets/button_widget.dart';
import 'package:pharmacy_mobile/widgets/image_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/page_background_widget.dart';
import 'package:pharmacy_mobile/widgets/slogan_widget.dart'; import 'package:pharmacy_mobile/widgets/slogan_widget.dart';
import 'package:pharmacy_mobile/widgets/text_widget.dart'; import 'package:pharmacy_mobile/widgets/text_widget.dart';
@ -46,46 +45,17 @@ class IndexPage extends StatelessWidget {
const SloganWidget(), const SloganWidget(),
const Gap(32), const Gap(32),
const MaxGap(500), const MaxGap(500),
const Row( const TextWidget(
mainAxisAlignment: MainAxisAlignment.center, text: 'Copyright © 2025 - Ofelia Franco-Alcala Pharmacy',
children: [ size: 10,
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 Row( const Gap(4),
mainAxisAlignment: MainAxisAlignment.center, const TextWidget(
children: [ text: 'Developed By: Pat Alcala',
TextWidget( size: 8,
text: 'Developed By:', opacity: 0.8,
size: 8, ),
opacity: 0.8, const Gap(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,
),
],
)
], ],
), ),
)); ));

View file

@ -2,7 +2,6 @@ import 'package:flutter/material.dart';
import 'package:gap/gap.dart'; import 'package:gap/gap.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:pharmacy_mobile/tables/stocks.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/datatable_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';

View file

@ -1,5 +1,3 @@
import 'dart:developer';
import 'package:supabase_flutter/supabase_flutter.dart'; import 'package:supabase_flutter/supabase_flutter.dart';
import 'package:uuid/uuid.dart'; import 'package:uuid/uuid.dart';

View file

@ -71,11 +71,11 @@ class ConsultationWidget extends StatelessWidget {
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
const Gap(32), const Gap(24),
ClipRRect( ClipRRect(
borderRadius: BorderRadius.circular(12), // Adjust the radius as needed borderRadius: BorderRadius.circular(12), // Adjust the radius as needed
child: 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), const Gap(24),
Column( Column(

View file

@ -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,
),
)),
);
}
}

View file

@ -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,
)
],
);
}
}

View file

@ -54,3 +54,4 @@ flutter:
- assets/images/ofelia.webp - assets/images/ofelia.webp
- assets/images/pamela.webp - assets/images/pamela.webp
- assets/pat-alcala_logo.webp - assets/pat-alcala_logo.webp
- assets/images/profile.webp