我一直在尝试测试一个元素,当按下 IconButton 时,文本对象会更改为 TextFormField。当我尝试测试这个时,我收到以下错误:
A Timer is still pending even after the widget tree was disposed.
'package:flutter_test/src/binding.dart': Failed assertion: line 672 pos 7:
'_fakeAsync.nonPeriodicTimerCount == 0'
Run Code Online (Sandbox Code Playgroud)
尽管小部件没有使用我知道的任何计时器?
示例代码:
await tester.tap(find.byType(IconButton));
await tester.pump();
expect(find.byType(TextFormField), findsOneWidget);
await tester.pump();
await tester.enterText(find.byType(EditableText), "0.2");
Run Code Online (Sandbox Code Playgroud)
我真的不确定是什么导致了问题,但如果我删除最后两行,它就可以正常运行(尽管我无法实际测试我的输入)。
我想滚动浏览下拉列表作为颤动驱动程序测试的一部分,但我似乎无法确切地弄清楚我将如何做到这一点?
我尝试过使用ValueKey,也尝试过深入研究 Intellij 中的 Flutter Inspector,但到目前为止还没有运气。
我正在研究一些与下面的示例非常相似的代码,它总是按顺序解析,尽管从未指定我想要对地图对象进行排序.
Map<String, Map<String, int>> map = {
"a" : {"value": 1, "price": 2},
"c" : {"value": 3, "price": 8},
"x" : {"value": 2, "price": 1},
"b" : {"value": 1, "price": 8},
};
map.forEach((name, map) => print(map));
Run Code Online (Sandbox Code Playgroud)
这总是导致
a
c
x
b
Run Code Online (Sandbox Code Playgroud)
注意:这就是我想要它做的事情,我只是在寻找解释为什么它以这种方式做事,因为更好地理解为什么会很有趣.