Smart_Vision_Assist_App/lib/screens/login_screen.dart

134 lines
3.4 KiB
Dart

import 'package:flutter/material.dart';
import '../widgets/custom_button.dart';
import '../widgets/custom_textfield.dart';
import '../services/tts_service.dart';
import '../services/auth_service.dart';
import '../utils/colors.dart';
import 'home_screen.dart';
import 'signup_screen.dart';
import 'forgot_password_screen.dart';
class LoginScreen extends StatelessWidget {
final TextEditingController emailController = TextEditingController();
final TextEditingController passwordController = TextEditingController();
final TTSService tts = TTSService();
final AuthService auth = AuthService();
LoginScreen({super.key});
// 🔐 LOGIN
void handleLogin(BuildContext context) {
bool success = auth.login(
emailController.text,
passwordController.text,
);
if (success) {
tts.speak("Login berhasil");
Navigator.push(
context,
MaterialPageRoute(builder: (_) => HomeScreen()),
);
} else {
tts.speak("Login gagal, periksa email dan password");
}
}
// 🔑 FORGOT PASSWORD
void handleForgotPassword(BuildContext context) {
tts.speak("Menu lupa password");
Navigator.push(
context,
MaterialPageRoute(builder: (_) => ForgotPasswordScreen()),
);
}
// 🆕 SIGN UP
void handleSignUp(BuildContext context) {
tts.speak("Menu pendaftaran akun");
Navigator.push(
context,
MaterialPageRoute(builder: (_) => SignUpScreen()),
);
}
@override
Widget build(BuildContext context) {
tts.speak("Silakan login");
return Scaffold(
backgroundColor: AppColors.background,
body: Padding(
padding: const EdgeInsets.all(20),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
// 🔷 TITLE
Text(
"Object Detector Assist",
style: TextStyle(
color: AppColors.text,
fontSize: 24,
fontWeight: FontWeight.bold,
),
),
SizedBox(height: 40),
// 📧 EMAIL
CustomTextField(
label: "Email",
controller: emailController,
),
SizedBox(height: 20),
// 🔒 PASSWORD
CustomTextField(
label: "Password",
controller: passwordController,
obscure: true,
),
SizedBox(height: 30),
// 🔘 LOGIN BUTTON
CustomButton(
text: "Login",
onPressed: () => handleLogin(context),
),
SizedBox(height: 15),
// 🔹 FORGOT PASSWORD
Semantics(
button: true,
label: "Lupa password",
child: TextButton(
onPressed: () => handleForgotPassword(context),
child: Text(
"Forgot Password?",
style: TextStyle(color: Colors.blue),
),
),
),
// 🔹 SIGN UP
Semantics(
button: true,
label: "Daftar akun baru",
child: TextButton(
onPressed: () => handleSignUp(context),
child: Text(
"Sign Up",
style: TextStyle(color: Colors.yellow),
),
),
),
],
),
),
);
}
}