首页 > 解决方案 > 在 Flutter 测试中关闭对话框的正确方法

问题描述

Flutter 的 WidgetTester 有一个pageBack()弹出路由栈的方法。fullscreenDialog当我使用 MaterialPageRoute 的属性将页面作为全屏对话框打开时,该pageBack()方法不起作用(“屏幕上应有一个后退按钮”)。我找不到工作的替代方法。

在 Flutter 测试中取消/关闭对话框的标准方法是什么?

我可以按如下方式关闭对话框:

await tester.tap(find.byIcon(Icons.close));

但后来我可以改为执行pageBack()以下操作:

await tester.tap(find.byIcon(Icons.arrow_back));

为什么有pageBack()关闭对话框的方法但没有等效方法?

我还没有编写我的 Cupertino UI。该测试是否需要寻找不同的图标?

另请参阅我在选择溢出菜单时遇到的类似问题

更新:也许pageBack()模拟按下系统后退按钮,而不是后退箭头?在这种情况下,无需在 iOS 上模拟该行为,无论如何,我必须通过图标找到后退按钮来模拟按下它。

标签: testingflutter

解决方案


您可以有一个对话框,其中包含一个带有文本“X”的按钮,该按钮会弹出对话框。这个按钮,你可以找到

await tester.tap(find.text('X'));

别忘了用水龙头抽水

await tester.pumpAndSettle();

查看 Flutter 团队用于测试对话框的完整代码示例:源代码


推荐阅读