Открыть диалоговое окно флаттера после навигации - PullRequest
0 голосов
/ 12 июня 2018

Я вызываю Navigator pushReplacement, чтобы показать новое представление в моем приложении флаттера, и хочу немедленно открыть простой диалог, чтобы представить страницу пользователю.(Я хочу, чтобы пользователь мог видеть новое представление в фоновом режиме)

Если я вызываю showDialog в методе сборки виджета, а затем впоследствии возвращаю виджет (скаффолд) из метода сборки, который я получаюошибки, указывающие на то, что флаттер уже рисует виджет.Я ожидаю, что мне нужно прослушать событие завершения сборки и затем вызвать showDialog.

Руководство о том, как это сделать, очень ценится.

1 Ответ

0 голосов
/ 12 июня 2018

Вы можете вызвать диалог изнутри 'initState ()', отображая его внешний вид после прорисовки первого кадра.

  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addPostFrameCallback((_) async {
      await showDialog<String>(
        context: context,
        builder: (BuildContext context) => new AlertDialog(
              title: new Text("title"),
              content: new Text("Message"),
              actions: <Widget>[
                new FlatButton(
                  child: new Text("OK"),
                  onPressed: () {
                    Navigator.of(context).pop();
                  },
                ),
              ],
            ),
      );
    });
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...