import 'package:flutter/material.dart'; class SignInForm extends StatefulWidget { const SignInForm({super.key}); @override State createState() => _SignInFormState(); } class _SignInFormState extends State { final _formKey = GlobalKey(); static const dialogName = "Sign In"; @override Widget build(BuildContext context) => AlertDialog( title: const Text(dialogName), content: Form( key: _formKey, child: Center( child: Column(children: [ TextFormField( autofocus: true, decoration: const InputDecoration( hintText: "Enter your username or email", icon: Icon(Icons.account_circle), ), ), TextFormField( obscureText: true, decoration: const InputDecoration( hintText: "Enter your password", icon: Icon(Icons.password), ), ), ]))), actions: [ TextButton( onPressed: () => Navigator.pop(context, 'Cancel'), child: const Text('Cancel'), ), TextButton( onPressed: () { // Validate returns true if the form is valid, or false otherwise. if (_formKey.currentState!.validate()) { // If the form is valid, display a snackbar. In the real world, // you'd often call a server or save the information in a database. ScaffoldMessenger.of(context).showSnackBar( SnackBar(content: Text(_formKey.toString())), ); } }, child: const Text('OK'), ), ], ); }