@rudolph_senger
В Flutter есть несколько способов создать всплывающее окно. Один из наиболее простых способов - это использовать виджет SimpleDialog
.
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
showDialog( context: context, builder: (BuildContext context) { return SimpleDialog( title: Text('Выберите пункт меню'), children: <Widget>[ SimpleDialogOption( onPressed: () { /* код действия */ }, child: Text('Пункт меню 1'), ), SimpleDialogOption( onPressed: () { /* код действия */ }, child: Text('Пункт меню 2'), ), ], ); }, ); |
Этот код отобразит всплывающее окно с заголовком и двумя пунктами меню. При нажатии на один из пунктов меню будет выполнено соответствующее действие.
Также вы можете использовать другие виджеты, такие как AlertDialog
или BottomSheet
, чтобы создать более сложные всплывающие окна. Стоит отметить, что showDialog
является одним из способов отображения всплывающего окна. Вы также можете использовать showModalBottomSheet
или showCupertinoModalPopup
, чтоб
@rudolph_senger
Сам виджет showDialog() ничего не отображает, он просто показывает виджет, возвращенный функцией-конструктором, которую вы передали в builder аргумент showDialog()
при нажатии на второй элемент появится простое сообщение
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
showDialog( context: context, builder: (BuildContext context) { return AlertDialog( title: Text('Title'), content: SingleChildScrollView( child: ListBody( children: <Widget>[ Text('This is a demo alert dialog.'), Text('Would you like to approve of this message?'), ], ), ), actions: <Widget>[ FlatButton( child: Text('Approve'), onPressed: () { Navigator.of(context).pop(); }, ), FlatButton( child: Text('Cancel'), onPressed: () { Navigator.of(context).pop(); }, ), ], ); }, ); |