import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:flutter_spinkit/flutter_spinkit.dart'; import 'package:penyaluran_app/app/modules/auth/controllers/auth_controller.dart'; import 'package:penyaluran_app/app/routes/app_pages.dart'; class LoginView extends GetView { const LoginView({super.key}); @override Widget build(BuildContext context) { return Scaffold( body: SafeArea( child: Padding( padding: const EdgeInsets.all(20.0), child: SingleChildScrollView( child: Form( key: controller.loginFormKey, child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ const SizedBox(height: 50), // Logo atau Judul const Center( child: Text( 'Penyaluran App', style: TextStyle( fontSize: 28, fontWeight: FontWeight.bold, color: Colors.blue, ), ), ), const SizedBox(height: 10), const Center( child: Text( 'Masuk ke akun Anda', style: TextStyle( fontSize: 16, color: Colors.grey, ), ), ), const SizedBox(height: 50), // Email Field TextFormField( controller: controller.emailController, keyboardType: TextInputType.emailAddress, decoration: InputDecoration( labelText: 'Email', prefixIcon: const Icon(Icons.email), border: OutlineInputBorder( borderRadius: BorderRadius.circular(10), ), ), validator: controller.validateEmail, ), const SizedBox(height: 20), // Password Field TextFormField( controller: controller.passwordController, obscureText: true, decoration: InputDecoration( labelText: 'Password', prefixIcon: const Icon(Icons.lock), border: OutlineInputBorder( borderRadius: BorderRadius.circular(10), ), ), validator: controller.validatePassword, ), const SizedBox(height: 10), // Forgot Password Align( alignment: Alignment.centerRight, child: TextButton( onPressed: () { // Implementasi lupa password }, child: const Text('Lupa Password?'), ), ), const SizedBox(height: 20), // Login Button Obx(() => ElevatedButton( onPressed: controller.isLoading.value ? null : controller.login, style: ElevatedButton.styleFrom( padding: const EdgeInsets.symmetric(vertical: 15), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10), ), ), child: controller.isLoading.value ? const SpinKitThreeBounce( color: Colors.white, size: 24, ) : const Text( 'MASUK', style: TextStyle( fontSize: 16, fontWeight: FontWeight.bold, ), ), )), const SizedBox(height: 20), // Divider const Row( children: [ Expanded(child: Divider()), Padding( padding: EdgeInsets.symmetric(horizontal: 16.0), child: Text('ATAU', style: TextStyle(color: Colors.grey)), ), Expanded(child: Divider()), ], ), const SizedBox(height: 20), // Register Donatur Button OutlinedButton( onPressed: () => Get.toNamed(Routes.registerDonatur), style: OutlinedButton.styleFrom( padding: const EdgeInsets.symmetric(vertical: 15), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10), ), side: const BorderSide(color: Colors.blue), ), child: const Text( 'DAFTAR SEBAGAI DONATUR', style: TextStyle( fontSize: 16, fontWeight: FontWeight.bold, ), ), ), ], ), ), ), ), ), ); } }