This commit is contained in:
Patrick Alvin Alcala 2025-01-22 16:23:32 +08:00
parent b2aeb642cc
commit b6b7ab6e84
8 changed files with 155 additions and 61 deletions

View file

@ -41,7 +41,7 @@ class IndexPage extends StatelessWidget {
width: 256, cacheWidth: (256 * MediaQuery.of(context).devicePixelRatio).round()),
),
const Gap(16),
TextButton(onPressed: () => {context.push('/login')}, child: Text('data'))
TextButton(onPressed: () => {context.push('/login')}, child: const Text('Login'))
],
),
),

View file

@ -1,9 +1,11 @@
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:gap/gap.dart';
import 'package:pharmacy_mobile/auth/auth_service.dart';
import 'package:pharmacy_mobile/main.dart';
import 'dart:developer';
import 'package:quickalert/quickalert.dart';
class LoginPage extends StatefulWidget {
const LoginPage({super.key});
@ -17,16 +19,30 @@ class _LoginPageState extends State<LoginPage> {
final _emailController = TextEditingController();
final _passwordController = TextEditingController();
Future<void> _signIn() async {
void _signIn() async {
final email = _emailController.text;
final password = _passwordController.text;
try {
await _authService.signIn(email, password);
log('message');
// QuickAlert.show(
// context: context,
// type: QuickAlertType.success,
// text: 'Login Successful',
// autoCloseDuration: const Duration(seconds: 1),
// showConfirmBtn: false,
// );
context.push('/main');
} catch (e) {
if (mounted) {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text('Error: $e')));
QuickAlert.show(
context: context,
type: QuickAlertType.error,
text: 'Error: $e',
autoCloseDuration: const Duration(seconds: 2),
showConfirmBtn: false,
);
// ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text('Error: $e')));
}
}
@ -87,76 +103,28 @@ class _LoginPageState extends State<LoginPage> {
children: [
TextFormField(
controller: _emailController,
decoration: InputDecoration(
decoration: const InputDecoration(
labelText: 'Email',
border: OutlineInputBorder(),
),
style: TextStyle(color: Colors.white),
style: const TextStyle(color: Colors.white),
),
const Gap(8),
TextFormField(
obscureText: true,
controller: _passwordController,
decoration: InputDecoration(
decoration: const InputDecoration(
labelText: 'Password',
border: OutlineInputBorder(),
),
style: TextStyle(color: Colors.white),
style: const TextStyle(color: Colors.white),
),
const Gap(16),
TextButton(onPressed: () => {_signIn()}, child: Text('Login'))
TextButton(onPressed: () => {_signIn()}, child: const Text('Login'))
],
)),
),
),
// Form(
// child: Column(
// children: [
// TextFormField(
// decoration: InputDecoration(
// labelText: 'Email',
// border: OutlineInputBorder(),
// ),
// validator: (value) {
// if (value.isEmpty) {
// return 'Please enter an email';
// }
// return null;
// },
// onSaved: (value) => _email = value,
// ),
// SizedBox(height: 20),
// TextFormField(
// decoration: InputDecoration(
// labelText: 'Password',
// border: OutlineInputBorder(),
// ),
// obscureText: true,
// validator: (value) {
// if (value.isEmpty) {
// return 'Please enter a password';
// }
// return null;
// },
// onSaved: (value) => _password = value,
// ),
// SizedBox(height: 20),
// ElevatedButton(
// onPressed: () {
// if (_formKey.currentState.validate()) {
// _formKey.currentState.save();
// // Login logic here
// print('Email: $_email, Password: $_password');
// }
// },
// child: Text('Login'),
// ),
// ],
// ),
// ),
// )
// )
],
),
),

66
lib/pages/main_page.dart Normal file
View file

@ -0,0 +1,66 @@
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:gap/gap.dart';
import 'package:go_router/go_router.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:pharmacy_mobile/auth/auth_service.dart';
import 'package:pharmacy_mobile/widgets/menu_widget.dart';
class MainPage extends StatelessWidget {
const MainPage({super.key});
@override
Widget build(BuildContext context) {
final authService = AuthService();
void signOut() async {
await authService.signOut();
context.push('/');
}
return Scaffold(
body: Container(
alignment: Alignment.center,
height: MediaQuery.of(context).size.height,
decoration: const BoxDecoration(
gradient: LinearGradient(
colors: [
Color.fromRGBO(34, 51, 69, 1),
Color.fromRGBO(22, 32, 44, 1),
],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
),
),
child: Center(
child: Column(
children: [
const Gap(120),
Text('Ofelia Franco-Alcala',
style: GoogleFonts.outfit(
textStyle: const TextStyle(color: Color.fromRGBO(255, 255, 255, 1), fontSize: 16))),
Text('Pharmacy',
style: GoogleFonts.outfit(
textStyle: const TextStyle(color: Color.fromRGBO(255, 255, 255, 1), fontSize: 32))),
const Gap(32),
Text('Menu',
style: GoogleFonts.outfit(
textStyle: const TextStyle(color: Color.fromRGBO(255, 255, 255, 1), fontSize: 32))),
const Gap(16),
MenuWidget(
icon: FontAwesomeIcons.squarePlus,
text: 'Add Medicine',
),
const Gap(16),
MenuWidget(
icon: FontAwesomeIcons.squarePlus,
text: 'Add Medicine',
),
TextButton(onPressed: () => {signOut()}, child: const Text('Logout'))
],
),
),
),
);
}
}