我有一个 StatefulWidget(称为 MyWidget
),它的 State (MyWidgetState
) 有一个字段 myData
,该字段在 initState 期间初始化()
如下:
void initState() {
super.initState();
myData = new myData(config.someField.getId());
}
当用户按下按钮时,myData 会被添加到全局列表中或从全局列表中删除。
我正在尝试编写一个单元测试来测试这种行为,但我不知道如何访问 MyWidgetState。我尝试在 setup() 中包含这个:
widget = MyWidget();
widgetState = widget.createState();
widgetState.init();
但它每次尝试 initState() 时都会崩溃,并提示“someField was called on null”。没关系。我尝试这样做可能是在作弊,我应该使用 WidgetBuilder 做一些事情或使用 MyWidget 启动应用程序,然后在正确实例化后在树中找到 MyWidget。
如果我做了所有这些,一旦我完成了,我如何访问该 MyWidget 的 MyWidgetState 以获取 myData 的副本并将其与全局列表进行比较?
最佳答案
您可以创建一个状态,然后访问它的内容。 关注 Ian Hickson回答。下面是一个实现的例子:
final MyWidgetState myWidgetState = tester.state(find.byType(MyWidget));
然后就可以访问状态内容了:
myWidgetState.myData;
您可以在 Flutter 的 repo 中找到更多示例.
https://stackoverflow.com/questions/42127901/