import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../core/theme/app_theme.dart'; import '../bloc/auth_bloc.dart'; /// User registration screen widget. class RegisterScreen extends StatefulWidget { const RegisterScreen({super.key}); @override State createState() => _RegisterScreenState(); } class _RegisterScreenState extends State { final _formKey = GlobalKey(); final _nameController = TextEditingController(); final _emailController = TextEditingController(); final _passwordController = TextEditingController(); void _submit() { if (_formKey.currentState?.validate() ?? false) { context.read().add(RegisterRequested( _emailController.text.trim(), _passwordController.text.trim(), _nameController.text.trim(), )); } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text('Konto Registrieren')), body: Center( child: SingleChildScrollView( padding: const EdgeInsets.all(24), child: Container( constraints: const BoxConstraints(maxWidth: 420), padding: const EdgeInsets.all(24), decoration: BoxDecoration( color: AppTheme.cardSurface, borderRadius: BorderRadius.circular(16), border: Border.all(color: AppTheme.glassBorder), ), child: Form( key: _formKey, child: Column( mainAxisSize: MainAxisSize.min, children: [ Icon(Icons.person_add_outlined, size: 48, color: AppTheme.primaryEmerald), const SizedBox(height: 16), const Text( 'Neues Konto erstellen', style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold), ), const SizedBox(height: 24), TextFormField( controller: _nameController, decoration: const InputDecoration(labelText: 'Vollständiger Name', prefixIcon: Icon(Icons.person_outline)), validator: (v) => v == null || v.isEmpty ? 'Name erforderlich' : null, ), const SizedBox(height: 14), TextFormField( controller: _emailController, decoration: const InputDecoration(labelText: 'E-Mail', prefixIcon: Icon(Icons.email_outlined)), validator: (v) => v == null || !v.contains('@') ? 'Gültige E-Mail erforderlich' : null, ), const SizedBox(height: 14), TextFormField( controller: _passwordController, obscureText: true, decoration: const InputDecoration(labelText: 'Passwort', prefixIcon: Icon(Icons.lock_outline)), validator: (v) => v == null || v.length < 6 ? 'Mind. 6 Zeichen' : null, ), const SizedBox(height: 24), SizedBox( width: double.infinity, height: 48, child: ElevatedButton( onPressed: _submit, style: ElevatedButton.styleFrom( backgroundColor: AppTheme.primaryEmerald, foregroundColor: Colors.black, ), child: const Text('Registrieren', style: TextStyle(fontWeight: FontWeight.bold)), ), ), ], ), ), ), ), ), ); } }