import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flux/core/theme/theme.dart'; import 'package:flux/core/widgets/flux_text_field.dart'; import 'package:flux/features/auth/bloc/auth_bloc.dart'; class AuthScreen extends StatefulWidget { const AuthScreen({super.key}); @override State createState() => _AuthScreenState(); } class _AuthScreenState extends State { final _emailController = TextEditingController(); final _passwordController = TextEditingController(); @override void dispose() { _emailController.dispose(); _passwordController.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( body: BlocConsumer( listener: (context, state) { if (state.status == AuthStatus.failure) { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text(state.error ?? 'Errore di autenticazione'), backgroundColor: Colors.redAccent, ), ); } }, builder: (context, state) { final isLoading = state.status == AuthStatus.loading; return SafeArea( child: Center( child: SingleChildScrollView( padding: const EdgeInsets.symmetric(horizontal: 32), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ // --- LOGO FLUX --- _buildLogo(context), const SizedBox(height: 60), // --- TITOLO DINAMICO --- Text( state.isLoginMode ? 'BENTORNATO' : 'CREA ACCOUNT', style: TextStyle( color: context.primaryText, fontSize: 24, fontWeight: FontWeight.w900, letterSpacing: 1.5, ), ), const SizedBox(height: 8), Text( state.isLoginMode ? 'Accedi per gestire il tuo business' : 'Inizia oggi a digitalizzare il tuo negozio', textAlign: TextAlign.center, style: TextStyle(color: context.secondaryText), ), const SizedBox(height: 40), // --- CAMPI INPUT --- FluxTextField( label: 'Email Aziendale', icon: Icons.email_outlined, controller: _emailController, keyboardType: TextInputType.emailAddress, ), const SizedBox(height: 20), FluxTextField( label: 'Password', icon: Icons.lock_outline, isPassword: true, controller: _passwordController, ), const SizedBox(height: 40), // --- BOTTONE PRINCIPALE --- SizedBox( width: double.infinity, height: 56, child: ElevatedButton( onPressed: isLoading ? null : () { context.read().add( LoginRequested( email: _emailController.text.trim(), password: _passwordController.text.trim(), ), ); }, child: isLoading ? const SizedBox( height: 24, width: 24, child: CircularProgressIndicator( strokeWidth: 2, color: Colors.white, ), ) : Text(state.isLoginMode ? 'ACCEDI' : 'REGISTRATI'), ), ), // --- SWITCH LOGIN/SIGNUP --- const SizedBox(height: 24), TextButton( onPressed: isLoading ? null : () { context.read().add(ToggleAuthMode()); }, child: RichText( text: TextSpan( text: state.isLoginMode ? "Non hai un account? " : "Hai giĆ  un account? ", style: TextStyle(color: context.secondaryText), children: [ TextSpan( text: state.isLoginMode ? "Registrati" : "Accedi", style: TextStyle( color: context.accent, fontWeight: FontWeight.bold, ), ), ], ), ), ), ], ), ), ), ); }, ), ); } Widget _buildLogo(BuildContext context) { return Column( children: [ Container( padding: const EdgeInsets.all(20), decoration: BoxDecoration( color: context.accent.withValues(alpha: 0.1), shape: BoxShape.circle, ), child: Icon( Icons.all_inclusive_rounded, // Simbolo dell'infinito/Flux size: 60, color: context.accent, ), ), const SizedBox(height: 16), Text( 'FLUX', style: TextStyle( color: context.primaryText, fontSize: 32, fontWeight: FontWeight.w900, letterSpacing: 10, ), ), ], ); } }