import 'package:flutter/material.dart'; import 'package:flutter/services.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 'package:pharmacy_mobile/widgets/button_widget.dart'; import 'package:pharmacy_mobile/widgets/text_widget.dart'; import 'package:pharmacy_mobile/widgets/title_widget.dart'; import 'dart:developer'; import 'package:quickalert/quickalert.dart'; class LoginPage extends StatefulWidget { const LoginPage({super.key}); @override State createState() => _LoginPageState(); } class _LoginPageState extends State { final _authService = AuthService(); final _emailController = TextEditingController(); final _passwordController = TextEditingController(); final FocusNode _focusNode = FocusNode(); void _signIn() async { final email = _emailController.text; final password = _passwordController.text; try { await _authService.signIn(email, password); // QuickAlert.show( // context: context, // type: QuickAlertType.success, // text: 'Login Successful', // autoCloseDuration: const Duration(seconds: 1), // showConfirmBtn: false, // ); context.push('/main'); } catch (e) { if (mounted) { 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'))); } } // if (mounted) { // context.showSnackBar('Check your email for a login link!'); // _emailController.clear(); // } } @override void dispose() { _emailController.dispose(); _passwordController.dispose(); super.dispose(); } @override Widget build(BuildContext context) { 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( mainAxisAlignment: MainAxisAlignment.start, children: [ const Gap(120), const TitleWidget(firstTextSize: 16, secondTextSize: 32), const Gap(32), const TextWidget(text: 'Login'), const Gap(16), Padding( padding: const EdgeInsets.only(left: 16, right: 16), child: Container( padding: EdgeInsets.all(16), decoration: BoxDecoration( border: Border.all(color: Colors.white), borderRadius: BorderRadius.all(Radius.circular(16))), child: Form( child: Column( children: [ TextFormField( controller: _emailController, decoration: const InputDecoration( labelText: 'Email', border: OutlineInputBorder(), ), style: const TextStyle(color: Colors.white), ), const Gap(8), KeyboardListener( focusNode: _focusNode, onKeyEvent: (event) { if (event is KeyDownEvent && event.logicalKey == LogicalKeyboardKey.enter) { _signIn(); } }, child: TextFormField( obscureText: true, controller: _passwordController, decoration: const InputDecoration( labelText: 'Password', border: OutlineInputBorder(), ), style: const TextStyle(color: Colors.white), ), ), const Gap(16), // TextButton(onPressed: () => {_signIn()}, child: const Text('Login')) ButtonWidget(text: 'Login', onPressed: _signIn) ], )), ), ), ], ), ), )); } }