In Flutter, creating forms in a popup is quite simple and can be achieved using various widgets provided by the framework. In this blog post, we will explore how to create forms in a popup using the AlertDialog widget.
Using showDialog
The showDialog function in Flutter takes a WidgetBuilder as a parameter so you can return any widget. This means that you can use the AlertDialog widget as the builder to create a form in a popup.
import 'package:flutter/material.dart'; void main() { runApp(const MaterialApp(home: MyApp())); } class MyApp extends StatefulWidget { const MyApp({super.key}); @override _MyAppState createState() => _MyAppState(); } class _MyAppState extends State{ final _formKey = GlobalKey (); @override Widget build(BuildContext context) => Scaffold( appBar: AppBar( title: const Text('Flutter'), ), body: Center( child: ElevatedButton( onPressed: () async { await showDialog ( context: context, builder: (context) => AlertDialog( content: Stack( clipBehavior: Clip.none, children: [ Positioned( right: -40, top: -40, child: InkResponse( onTap: () { Navigator.of(context).pop(); }, child: const CircleAvatar( backgroundColor: Colors.red, child: Icon(Icons.close), ), ), ), Form( key: _formKey, child: Column( mainAxisSize: MainAxisSize.min, children: [ Padding( padding: const EdgeInsets.all(8), child: TextFormField(), ), Padding( padding: const EdgeInsets.all(8), child: TextFormField(), ), Padding( padding: const EdgeInsets.all(8), child: ElevatedButton( child: const Text('Submit'), onPressed: () { if (_formKey.currentState!.validate()) { _formKey.currentState!.save(); } }, ), ) ], ), ), ], ), )); }, child: const Text('Open Popup'), ), ), ); }
Example Code for Creating a Form in a Popup
Here is an example of code that will allow you to create a button that can produce this kind of popup.
RaisedButton( child: Text("Open Popup"), onPressed: () { showDialog( context: context, builder: (BuildContext context) { return AlertDialog( scrollable: true, title: Text('Login'), content: Padding( padding: const EdgeInsets.all(8.0), child: Form( child: Column( children:[ TextFormField( decoration: InputDecoration( labelText: 'Name', icon: Icon(Icons.account_box), ), ), TextFormField( decoration: InputDecoration( labelText: 'Email', icon: Icon(Icons.email), ), ), TextFormField( decoration: InputDecoration( labelText: 'Message', icon: Icon(Icons.message ), ), ), ], ), ), ), actions: [ ElevatedButton( child: Text("Submit"), onPressed: () { // your code }) ], ); }); }, )
Manipulating the Properties of the Form Widget, TextField Widget, or RaisedButton Widget
For more options, you would have to manipulate the properties of the Form widget, the TextField widget or the RaisedButton widget such as autovalidation, decoration, color etc… If this is not enough, you can use the Dialog widget instead of the AlertDialog widget. But in this case, you will replace the content property with child. And make the necessary modifications.
Conclusion
In conclusion, creating forms in a popup using Flutter’s showDialog function and AlertDialog widget is quite simple and can be achieved by manipulating various widgets provided by the framework. By following the examples and code snippets provided above, you should now have a better understanding of how to create forms in a popup using Flutter.