import 'package:flutter/material.dart'; import 'package:firebase_auth/firebase_auth.dart'; import 'register_page.dart'; class LoginPage extends StatefulWidget { const LoginPage({super.key}); @override State createState() => _LoginPageState(); } class _LoginPageState extends State { final emailController = TextEditingController(); final passwordController = TextEditingController(); bool isLoading = false; Future loginUser() async { if (emailController.text.isEmpty || passwordController.text.isEmpty) { ScaffoldMessenger.of(context).showSnackBar( const SnackBar(content: Text("Email & Password wajib diisi")), ); return; } try { setState(() => isLoading = true); await FirebaseAuth.instance.signInWithEmailAndPassword( email: emailController.text.trim(), password: passwordController.text.trim(), ); // login berhasil, StreamBuilder di main.dart otomatis pindah ke MainNavigation } on FirebaseAuthException catch (e) { ScaffoldMessenger.of( context, ).showSnackBar(SnackBar(content: Text(e.message ?? "Login gagal"))); } finally { setState(() => isLoading = false); } } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: const Color(0xFFE6F0EA), body: Padding( padding: const EdgeInsets.all(20), child: Center( child: SingleChildScrollView( child: Column( children: [ Image.asset( "assets/images/logo1.png", height: 240, fit: BoxFit.contain, ), const SizedBox(height: 40), TextField( controller: emailController, decoration: InputDecoration( prefixIcon: const Icon(Icons.email), hintText: "Email", border: OutlineInputBorder( borderRadius: BorderRadius.circular(10), ), ), ), const SizedBox(height: 15), TextField( controller: passwordController, obscureText: true, decoration: InputDecoration( prefixIcon: const Icon(Icons.lock), hintText: "Password", border: OutlineInputBorder( borderRadius: BorderRadius.circular(10), ), ), ), const SizedBox(height: 20), SizedBox( width: double.infinity, height: 50, child: ElevatedButton( onPressed: isLoading ? null : loginUser, style: ElevatedButton.styleFrom( backgroundColor: const Color(0xFF67B985), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(8), ), ), child: isLoading ? const CircularProgressIndicator(color: Colors.white) : const Text("Login"), ), ), const SizedBox(height: 15), Row( mainAxisAlignment: MainAxisAlignment.center, children: [ const Text("Belum punya akun? "), GestureDetector( onTap: () { Navigator.push( context, MaterialPageRoute( builder: (_) => const RegisterPage(), ), ); }, child: const Text( "Register", style: TextStyle( fontWeight: FontWeight.bold, color: Colors.black, ), ), ), ], ), ], ), ), ), ), ); } }