FlutterDriver - как закрыть showDialog

Я работаю с 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 ответа

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

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

await driver.tap(find.byType('ModalBarrier'));

Добавить

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

после

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

Другие вопросы по тегам