Как сделать всплывающее окно в flutter?

Пользователь

от rudolph_senger , в категории: Другие , 2 года назад

Как сделать всплывающее окно в flutter?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от hoyt.jerde , 2 года назад

@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, чтоб

Пользователь

от montana_hand , год назад

@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();
          },
        ),
      ],
    );
  },
);