import 'package:flutter/material.dart'; import 'package:kent_logistics_app/screens/welcome_screen.dart'; import 'package:provider/provider.dart'; import '../providers/auth_provider.dart'; import '../widgets/rounded_input.dart'; import '../widgets/primary_button.dart'; import 'main_bottom_nav.dart'; class LoginScreen extends StatefulWidget { const LoginScreen({super.key}); @override State createState() => _LoginScreenState(); } class _LoginScreenState extends State { final cLoginId = TextEditingController(); final cPassword = TextEditingController(); @override void dispose() { cLoginId.dispose(); cPassword.dispose(); super.dispose(); } Future _login() async { final auth = Provider.of(context, listen: false); final loginId = cLoginId.text.trim(); final password = cPassword.text.trim(); if (loginId.isEmpty || password.isEmpty) { ScaffoldMessenger.of(context).showSnackBar( const SnackBar(content: Text('Please enter login id and password')), ); return; } final res = await auth.login(context, loginId, password); if (res['success'] == true) { if (!mounted) return; Navigator.of(context).pushReplacement( MaterialPageRoute(builder: (_) => const MainBottomNav()), ); } else { final msg = res['message']?.toString() ?? 'Login failed'; if (!mounted) return; ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(msg))); } } @override Widget build(BuildContext context) { final auth = Provider.of(context); final width = MediaQuery.of(context).size.width; return Scaffold( appBar: AppBar( leading: IconButton( icon: const Icon(Icons.arrow_back), onPressed: () { Navigator.pushReplacement( context, MaterialPageRoute(builder: (_) => const WelcomeScreen()), ); }, ), title: const Text('Login'), ), body: Padding( padding: EdgeInsets.symmetric(horizontal: width * 0.06, vertical: 20), child: Column( children: [ RoundedInput( controller: cLoginId, hint: 'Email / Mobile / Customer ID', ), const SizedBox(height: 12), RoundedInput( controller: cPassword, hint: 'Password', obscure: true, ), const SizedBox(height: 18), PrimaryButton(label: 'Login', onTap: _login, busy: auth.loading), ], ), ), ); } }