import 'package:flutter/material.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, title: 'Login Screen', theme: ThemeData(primarySwatch: Colors.blue), home: const LoginScreen(), ); } } class LoginScreen extends StatefulWidget { const LoginScreen({Key? key}) : super(key: key); @override State createState() => _LoginScreenState(); } class _LoginScreenState extends State { final _emailController = TextEditingController(); final _passwordController = TextEditingController(); final _formKey = GlobalKey(); @override void dispose() { _emailController.dispose(); _passwordController.dispose(); super.dispose(); } void _login() { if (_formKey.currentState!.validate()) { // Perform login action ScaffoldMessenger.of(context).showSnackBar( const SnackBar(content: Text('Logging in...')), ); } } void _forgotPassword() { showDialog( context: context, builder: (context) => AlertDialog( title: const Text('Password Recovery'), content: TextField( decoration: const InputDecoration( labelText: 'Enter your email', border: OutlineInputBorder(), ), keyboardType: TextInputType.emailAddress, ), actions: [ TextButton( onPressed: () => Navigator.pop(context), child: const Text('Cancel'), ), TextButton( onPressed: () { Navigator.pop(context); ScaffoldMessenger.of(context).showSnackBar( const SnackBar(content: Text('Password recovery email sent.')), ); }, child: const Text('Submit'), ), ], ), ); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('Login'), ), body: Padding( padding: const EdgeInsets.all(16.0), child: Form( key: _formKey, child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ TextFormField( controller: _emailController, decoration: const InputDecoration( labelText: 'Email', border: OutlineInputBorder(), ), keyboardType: TextInputType.emailAddress, validator: (value) { if (value == null || value.isEmpty) { return 'Please enter your email'; } if (!RegExp(r"^[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$") .hasMatch(value)) { return 'Please enter a valid email'; } return null; }, ), const SizedBox(height: 16), TextFormField( controller: _passwordController, decoration: const InputDecoration( labelText: 'Password', border: OutlineInputBorder(), ), obscureText: true, validator: (value) { if (value == null || value.isEmpty) { return 'Please enter your password'; } return null; }, ), const SizedBox(height: 16), SizedBox( width: double.infinity, child: ElevatedButton( onPressed: _login, child: const Text('Login'), ), ), TextButton( onPressed: _forgotPassword, child: c