This commit is contained in:
Patrick Alvin Alcala 2025-02-05 11:57:06 +08:00
parent 2c63edd554
commit 5b6134a5c3
9 changed files with 72 additions and 62 deletions

View file

@ -79,6 +79,7 @@ class _LoginPageState extends State<LoginPage> {
return Scaffold(
resizeToAvoidBottomInset: false,
body: PageBackgroundWidget(
page: 'login',
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,

View file

@ -61,59 +61,60 @@ class _RegisterPageState extends State<RegisterPage> {
Widget build(BuildContext context) {
return Scaffold(
body: PageBackgroundWidget(
page: 'register',
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: [
const Gap(96),
const TitleWidget(firstTextSize: 20, secondTextSize: 32),
const Gap(32),
const TextWidget(text: 'Register'),
const Gap(16),
Padding(
padding: const EdgeInsets.only(left: 32, right: 32),
child: Container(
padding: EdgeInsets.fromLTRB(32, 32, 32, 40),
decoration: BoxDecoration(
color: const Color.fromRGBO(57, 38, 62, 0.6),
borderRadius: BorderRadius.all(Radius.circular(16)),
boxShadow: [
BoxShadow(
color: const Color.fromRGBO(0, 0, 0, 0.2), // Subtle shadow to give depth
spreadRadius: 0,
blurRadius: 4,
offset: Offset(0, 2),
)
]),
child: Form(
child: Column(
children: [
InputWidget(label: 'Email', controller: _emailController),
const Gap(16),
InputWidget(
label: 'Password',
controller: _passwordController,
password: true,
),
const Gap(16),
InputWidget(
label: 'Confirm Password',
controller: _confirmPasswordController,
password: true,
),
const Gap(40),
// TextButton(onPressed: () => {_signIn()}, child: const Text('Login'))
if (_isLoading)
Center(child: CircularProgressIndicator(color: Colors.white))
else
ButtonWidget(text: 'Create Account', onPressed: _signUp)
],
)),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: [
const Gap(96),
const TitleWidget(firstTextSize: 20, secondTextSize: 32),
const Gap(32),
const TextWidget(text: 'Register'),
const Gap(16),
Padding(
padding: const EdgeInsets.only(left: 32, right: 32),
child: Container(
padding: EdgeInsets.fromLTRB(32, 32, 32, 40),
decoration: BoxDecoration(
color: const Color.fromRGBO(57, 38, 62, 0.6),
borderRadius: BorderRadius.all(Radius.circular(16)),
boxShadow: [
BoxShadow(
color: const Color.fromRGBO(0, 0, 0, 0.2), // Subtle shadow to give depth
spreadRadius: 0,
blurRadius: 4,
offset: Offset(0, 2),
)
]),
child: Form(
child: Column(
children: [
InputWidget(label: 'Email', controller: _emailController),
const Gap(16),
InputWidget(
label: 'Password',
controller: _passwordController,
password: true,
),
const Gap(16),
InputWidget(
label: 'Confirm Password',
controller: _confirmPasswordController,
password: true,
),
const Gap(40),
// TextButton(onPressed: () => {_signIn()}, child: const Text('Login'))
if (_isLoading)
Center(child: CircularProgressIndicator(color: Colors.white))
else
ButtonWidget(text: 'Create Account', onPressed: _signUp)
],
)),
),
),
],
),
],
),
)),
)),
);
}
}

View file

@ -2,30 +2,37 @@ import 'package:flutter/material.dart';
class PageBackgroundWidget extends StatelessWidget {
final Widget child;
final String? page;
const PageBackgroundWidget({super.key, required this.child});
const PageBackgroundWidget({super.key, required this.child, this.page});
@override
Widget build(BuildContext context) {
return SingleChildScrollView(
scrollDirection: Axis.vertical,
// physics: NeverScrollableScrollPhysics(),
child: Container(
alignment: Alignment.center,
height: MediaQuery.of(context).size.height + 200,
decoration: const BoxDecoration(
image: DecorationImage(image: AssetImage('assets/background2.webp'), fit: BoxFit.fitWidth, opacity: 0.2),
gradient: RadialGradient(
decoration: BoxDecoration(
image: DecorationImage(
// Image.asset('assets/ph_logo2.webp',
// width: 192, cacheWidth: (192 * MediaQuery.of(context).devicePixelRatio).round()),
image: AssetImage(page == 'login'
? 'assets/login_background.webp'
: page == 'register'
? 'assets/register_background.webp'
: 'assets/background.webp'),
// image: Image.asset('assets/login_background.webp', width: 192, cacheWidth: (192 * MediaQuery.of(context).devicePixelRatio).round()),
fit: BoxFit.fitWidth,
alignment: Alignment.topCenter,
opacity: 0.2,
),
gradient: const RadialGradient(
tileMode: TileMode.clamp,
colors: [
// Color.fromRGBO(132, 84, 125, 1),
// Color.fromRGBO(96, 48, 90, 1),
Color.fromRGBO(45, 15, 43, 1),
Color.fromRGBO(77, 29, 73, 1),
// Color.fromRGBO(241, 220, 223, 1),
],
// begin: Alignment.topCenter,
// end: Alignment.bottomCenter,
),
),
child: Center(