Флаттер: диалоговое окно находится над Навигатором (стек)? - PullRequest
0 голосов
/ 29 октября 2018

Как определить, отображается ли какой-либо диалог или верхняя часть стека является диалогом?

У меня есть функция async, которая выводит диалоговое окно (например, пост-запрос с диалогом загрузки). Когда приходит ответ, загрузка диалогового окна закрывается (всплывающее окно), а затем выводится диалоговое окно сообщения.

Но проблема в следующем:
Если я отправляю несколько запросов, иногда экран загрузки остается сверху ...

1 Ответ

0 голосов
/ 29 октября 2018

Вы можете проверить, находится ли Dialog поверх объекта Navigator, выполнив небольшую проверку:

void _verifyDialog(context) {
    var _isDialogOnTop = false;
    var stackCount = 0;

    Navigator.popUntil(context, (route) {
      if (!_isDialogOnTop && route.toString().contains("_DialogRoute")) {
        _isDialogOnTop = true;
      }
      else{
        stackCount++;
      }

      return _isDialogOnTop || stackCount > 0;
    });

    print (_isDialogOnTop);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...