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')
);