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: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),

View file

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

View file

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

View file

@ -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<CustomerSearchPage> {
// }
// }
void _filterList() {}
// void _filterList() {}
void autoRun() async {
await _getAllStocks();
@ -79,107 +81,99 @@ class _CustomerSearchPageState extends State<CustomerSearchPage> {
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,
),
],
),
)
],
)
],
)
],
)));
}
}

View file

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

View file

@ -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';

View file

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

View file

@ -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(

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/pamela.webp
- assets/pat-alcala_logo.webp
- assets/images/profile.webp