FlutterDriver-如何关闭showDialog

时间:2019-11-05 17:38:47

标签: flutter dismiss showdialog flutterdriver

我正在使用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'));

我不知道怎么关闭对话框。我尝试过:

  • 使用与上面所示相同的值
  • 在脚手架中添加钥匙,找到钥匙并点击
  • 在层次结构的其他UI元素中添加键,查找并点击

我收到的错误消息是:

  

FlutterDriver:点击消息需要很长时间才能完成...

2 个答案:

答案 0 :(得分:1)

添加

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

之后

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

答案 1 :(得分:1)

我发现showDialog()提供了一个ModalBarrier来在显示对话框时停止用户输入。

关闭showDialog的诀窍是按类型查找传入ModalBarrier,如下所示:

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