FlutterDriver - как закрыть showDialog - PullRequest
1 голос
/ 05 ноября 2019

Я работаю с FlutterDriver, у меня есть определенный IconButton и набор ключей, как показано:

Center(
  child: IconButton(
    key: Key('moredots'),
    icon: Icon(Icons.more_vert),
    onPressed: () {
      showDialog(
        context: context,
        builder: (_) => tableConfig,        
      );
    },
  ),
)

Диалоговое окно успешно отображается со следующим кодом:

await driver.tap(find.byValueKey('moredots'));

ЧтоЯ не могу понять, как закрыть диалог. Я пробовал:

  • Нажав на то же значение, как показано выше
  • Добавление ключа в Scaffold, поиск ключа и нажатие
  • Добавление ключей в другие элементы пользовательского интерфейсав иерархии, поиск и постукивание

Полученное сообщение об ошибке:

FlutterDriver: для завершения сообщения постукивания требуется много времени ...

Ответы [ 2 ]

1 голос
/ 06 ноября 2019

Я выяснил, что showDialog () представляет ModalBarrier для остановки ввода пользователя, пока отображается диалоговое окно.

Хитрость для закрытия showDialog заключается в поиске по типу, передающему в ModalBarrier, как показано здесь:

await driver.tap(find.byType('ModalBarrier'));
1 голос
/ 05 ноября 2019

Добавить

Navigator.of(context).pop(false);

после

await driver.tap(find.byValueKey('moredots'));

...