I want to create a form inside a pop-up with flutter like the image below: popup
.
how can I do that with flutter?
Here you go! showDialog takes a WidgetBuilder as a parameter so you can return any widget.
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<MyApp> {
final _formKey = GlobalKey<FormState>();
@override
Widget build(BuildContext context) => Scaffold(
appBar: AppBar(
title: const Text('Flutter'),
),
body: Center(
child: ElevatedButton(
onPressed: () async {
await showDialog<void>(
context: context,
builder: (context) => AlertDialog(
content: Stack(
clipBehavior: Clip.none,
children: <Widget>[
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: <Widget>[
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'),
),
),
);
}
Hop it helps!