【发布时间】:2022-12-12 15:44:36
【问题描述】:
我正在学习 flutter 的 widget 测试
我正在阅读 flutter 的 widget 测试官方文档。
我想知道 find() 方法如何找到小部件。
find.byKey() 可以通过环顾小部件树找到哪个小部件具有特定键,
但是像 find.byWidget() 一样,它如何找到特定的小部件?
【问题讨论】:
标签: flutter
我正在学习 flutter 的 widget 测试
我正在阅读 flutter 的 widget 测试官方文档。
我想知道 find() 方法如何找到小部件。
find.byKey() 可以通过环顾小部件树找到哪个小部件具有特定键,
但是像 find.byWidget() 一样,它如何找到特定的小部件?
【问题讨论】:
标签: flutter
find.byWidget() 方法通过检查它是否等于作为参数传递给该方法的小部件来查找小部件。这通常通过检查两个小部件的 runtimeType 和键是否匹配来完成。
例如,假设您有一个带有特定键的文本小部件,并且您想使用 find.byWidget() 方法找到它。您将首先创建文本小部件并为其分配一个键,如下所示:
final myText = Text(
'Hello World',
key: Key('my_text'),
);
然后,您可以使用 find.byWidget() 方法在小部件树中查找此小部件,如下所示:
final foundWidget = find.byWidget(myText);
如果在小部件树中找到,这将返回 Text 小部件,如果未找到,则返回 null。然后,您可以使用此小部件引用来执行断言或与测试中的小部件交互。
请记住,find.byWidget() 方法仅检查两个小部件之间的严格相等性。这意味着如果您有多个具有相同 runtimeType 和键的小部件,则 find.byWidget() 方法将只返回它遇到的第一个符合条件的小部件。要查找所有符合条件的小部件,您可以改用 find.descendant() 方法。
【讨论】: