import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:flutter_application_1/features/auth/data/models/mock_waste_data.dart'; class RegisterScreen extends StatefulWidget { const RegisterScreen({super.key}); @override State createState() => _RegisterScreenState(); } class _RegisterScreenState extends State { final _formKey = GlobalKey(); late String _selectedColonia; // 📍 Se mantiene late pero se inicializa abajo final _nameController = TextEditingController(); final _emailController = TextEditingController(); final _passwordController = TextEditingController(); // 📍 CORRECCIÓN CRÍTICA: Asignar el valor inicial antes del método build @override void initState() { super.initState(); if (MockWasteData.schedules.isNotEmpty) { // Evita problemas de aserción tomando el primer valor real de tus mocks _selectedColonia = MockWasteData.schedules.first.colonia; } else { _selectedColonia = ''; // Respaldo por si la lista estuviera vacía } } @override void dispose() { _nameController.dispose(); _emailController.dispose(); _passwordController.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text('Crear Cuenta Ciudadana')), body: SingleChildScrollView( padding: const EdgeInsets.all(24.0), child: Form( key: _formKey, child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ const Icon(Icons.assignment_ind_outlined, size: 80, color: Colors.green), const SizedBox(height: 16), Text( 'Regístrate para recibir avisos de recolección en tu zona', textAlign: TextAlign.center, style: Theme.of(context).textTheme.bodyLarge, ), const SizedBox(height: 24), TextFormField( controller: _nameController, decoration: const InputDecoration(labelText: 'Nombre Completo', border: OutlineInputBorder()), validator: (v) => v == null || v.isEmpty ? 'Ingresa tu nombre' : null, ), const SizedBox(height: 16), TextFormField( controller: _emailController, decoration: const InputDecoration(labelText: 'Correo o Teléfono', border: OutlineInputBorder()), validator: (v) => v == null || v.isEmpty ? 'Ingresa tus datos' : null, ), const SizedBox(height: 16), TextFormField( controller: _passwordController, obscureText: true, decoration: const InputDecoration(labelText: 'Contraseña', border: OutlineInputBorder()), validator: (v) => v == null || v.length < 6 ? 'Mínimo 6 caracteres' : null, ), const SizedBox(height: 16), // Dropdown para seleccionar la Colonia DropdownButtonFormField( value: _selectedColonia, decoration: const InputDecoration(labelText: 'Selecciona tu Colonia / Domicilio', border: OutlineInputBorder()), items: MockWasteData.schedules.map((zone) { return DropdownMenuItem(value: zone.colonia, child: Text(zone.colonia)); }).toList(), onChanged: (val) => setState(() => _selectedColonia = val!), ), const SizedBox(height: 24), // Mensajería Preventiva Legal Card( color: Colors.amber.shade50, child: Padding( padding: const EdgeInsets.all(12.0), child: Text( '🔒 Privacidad Garantizada:\nAl registrar tu domicilio, tu cuenta operará bajo el principio de "Visión de Túnel". Solo verás alertas de tu sector. Está prohibido el rastreo de flotillas.', style: TextStyle(color: Colors.amber.shade900, fontSize: 13, fontWeight: FontWeight.bold), ), ), ), const SizedBox(height: 24), ElevatedButton( style: ElevatedButton.styleFrom(padding: const EdgeInsets.symmetric(vertical: 16), backgroundColor: Colors.green), onPressed: () { if (_formKey.currentState!.validate()) { ScaffoldMessenger.of(context).showSnackBar( const SnackBar(content: Text('Cuenta creada con éxito (Modo Simulación)')), ); context.go('/home?colonia=$_selectedColonia'); } }, child: const Text('Registrarse', style: TextStyle(color: Colors.white, fontSize: 16)), ), ], ), ), ), ); } }