import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../providers/auth_provider.dart'; class ResetPasswordScreen extends ConsumerStatefulWidget { const ResetPasswordScreen({super.key}); @override ConsumerState createState() => _ResetPasswordScreenState(); } class _ResetPasswordScreenState extends ConsumerState { final _formKey = GlobalKey(); final _emailController = TextEditingController(); bool _isLoading = false; @override void dispose() { _emailController.dispose(); super.dispose(); } Future _handleResetPassword() async { if (!_formKey.currentState!.validate()) return; setState(() => _isLoading = true); try { final resetPassword = ref.read(resetPasswordProvider); await resetPassword(_emailController.text.trim()); if (mounted) { ScaffoldMessenger.of(context).showSnackBar( const SnackBar( content: Text('E-post for tilbakestilling av passord er sendt'), backgroundColor: Colors.green, ), ); Navigator.pop(context); } } catch (e) { if (mounted) { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text(e.toString()), backgroundColor: Colors.red, ), ); } } finally { if (mounted) { setState(() => _isLoading = false); } } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('Tilbakestill passord'), ), body: SafeArea( child: Padding( padding: const EdgeInsets.all(24.0), child: Form( key: _formKey, child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ const Text( 'Skriv inn e-postadressen din, så sender vi deg en lenke for å tilbakestille passordet.', style: TextStyle(fontSize: 16), ), const SizedBox(height: 24), TextFormField( controller: _emailController, keyboardType: TextInputType.emailAddress, decoration: const InputDecoration( labelText: 'E-post', prefixIcon: Icon(Icons.email_outlined), ), validator: (value) { if (value == null || value.isEmpty) { return 'Vennligst skriv inn e-post'; } if (!value.contains('@')) { return 'Vennligst skriv inn en gyldig e-post'; } return null; }, ), const SizedBox(height: 24), FilledButton( onPressed: _isLoading ? null : _handleResetPassword, style: FilledButton.styleFrom( padding: const EdgeInsets.symmetric(vertical: 16), ), child: _isLoading ? const SizedBox( height: 20, width: 20, child: CircularProgressIndicator(strokeWidth: 2), ) : const Text('Send tilbakestillingslenke'), ), ], ), ), ), ), ); } }