import 'package:flutter/material.dart'; import '../services/auth_service.dart'; class RegisterScreen extends StatefulWidget { const RegisterScreen({super.key}); @override State createState() => _RegisterScreenState(); } class _RegisterScreenState extends State { final _formKey = GlobalKey(); final _emailController = TextEditingController(); final _passwordController = TextEditingController(); final _confirmController = TextEditingController(); bool _loading = false; @override void dispose() { _emailController.dispose(); _passwordController.dispose(); _confirmController.dispose(); super.dispose(); } Future _register() async { if (!_formKey.currentState!.validate()) return; setState(() => _loading = true); try { await AuthService.instance.registerWithEmailPassword( email: _emailController.text.trim(), password: _passwordController.text, ); if (!mounted) return; Navigator.of(context).pop(); } catch (e) { if (!mounted) return; ScaffoldMessenger.of(context).showSnackBar( SnackBar(content: Text(e.toString())), ); } finally { if (mounted) setState(() => _loading = false); } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text('Register')), body: Center( child: ConstrainedBox( constraints: const BoxConstraints(maxWidth: 420), child: Card( margin: const EdgeInsets.all(20), child: Padding( padding: const EdgeInsets.all(20), child: Form( key: _formKey, child: Column( mainAxisSize: MainAxisSize.min, children: [ TextFormField( controller: _emailController, decoration: const InputDecoration(labelText: 'Email'), validator: (value) => (value == null || value.trim().isEmpty) ? 'Email is required' : null, ), const SizedBox(height: 12), TextFormField( controller: _passwordController, obscureText: true, decoration: const InputDecoration(labelText: 'Password (min 6)'), validator: (value) { if (value == null || value.isEmpty) { return 'Password is required'; } if (value.length < 6) { return 'Must be at least 6 characters'; } return null; }, ), const SizedBox(height: 12), TextFormField( controller: _confirmController, obscureText: true, decoration: const InputDecoration(labelText: 'Confirm Password'), validator: (value) { if (value != _passwordController.text) { return 'Passwords do not match'; } return null; }, ), const SizedBox(height: 16), SizedBox( width: double.infinity, child: FilledButton( onPressed: _loading ? null : _register, child: _loading ? const SizedBox( width: 18, height: 18, child: CircularProgressIndicator(strokeWidth: 2), ) : const Text('Create Account'), ), ), ], ), ), ), ), ), ), ); } }