0p3*_*t0r 6 flutter widget-test-flutter
在我的应用程序中,我使用FlatButton.icon
(Flutter docs)创建了一个按钮。现在我试图在测试期间找到按钮。
我试过了
find.byType(MaterialButton); // -> zero widgets
find.byType(FlatButton); // -> zero widget
Run Code Online (Sandbox Code Playgroud)
奇怪的是我可以找到按钮的文字
find.text('my button text');
Run Code Online (Sandbox Code Playgroud)
我还可以找到按钮的图标
find.byType('Icon');
Run Code Online (Sandbox Code Playgroud)
我不确定我应该搜索什么才能找到按钮。
好吧,所以我无法找到 FlatButton 本身,但很容易找到带有 的图标。。。
find.byIcon(Icons.yourIcon);
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅相关文档:flutter_test find.byIcon
尽管这个问题可能看起来很老,但我想扩展这个主题,因为没有一个答案实际上显示了如何找到 FlatButton 本身。问题是这FlatButton.icon
不是一个构造函数,而是一个创建不同对象的工厂_FlatButtonWithIcon
,FlatButton
它显然只能在其文件中使用。同时,find.byType
仅查找相同类型的小部件 - 它不适用于派生类型。
因此,返回对象本身:find.ancestor(of: find.byIcon(Icons.your_icon), matching: find.byWidgetPredicate((widget) => widget is FlatButton))
. 这种方法让我们可以获取按钮对象,然后通过调用来测试其属性(例如, onPressed
)或子窗口小部件(例如, ) 。label
find.descendant
归档时间: |
|
查看次数: |
1040 次 |
最近记录: |