有没有办法让动画不停止 Flutter 驱动程序?
Is there a way to make Animations not Halt Flutter driver?
FlutterDriver
from flutter_driver
将暂停 所有动作,直到不再播放动画为止。
我的 UI 涉及循环动画,我想在播放此类动画时点击我的集成测试中的某些内容。
一旦我进入一个有循环动画的屏幕,除非有点击输入,否则它不会停止,FlutterDriver
将简单地 超时 因为它等待动画完成(这因此在我的集成测试中永远不会发生)。
基本上,所有像 driver.tap
will by default wait for all animations (at least created by an AnimationController
) 这样的操作都在执行之前。
test('stop looping animation', () async {
// Navigated to a screen with a looping animation before that.
await driver.tap(find.byValueKey('stop_looping_animation')); // FlutterDriver will time out here.
});
您可以使用 FlutterDriver.runUnsynchronized
:
test('stop looping animation', () async {
await driver.runUnsynchronized(() async {
await driver.tap(find.byValueKey('stop_looping_animation'));
});
});
遇到了类似的问题,这条评论有帮助:https://github.com/flutter/flutter/issues/34503#issuecomment-503545683
FlutterDriver
from flutter_driver
将暂停 所有动作,直到不再播放动画为止。
我的 UI 涉及循环动画,我想在播放此类动画时点击我的集成测试中的某些内容。
一旦我进入一个有循环动画的屏幕,除非有点击输入,否则它不会停止,FlutterDriver
将简单地 超时 因为它等待动画完成(这因此在我的集成测试中永远不会发生)。
基本上,所有像 driver.tap
will by default wait for all animations (at least created by an AnimationController
) 这样的操作都在执行之前。
test('stop looping animation', () async {
// Navigated to a screen with a looping animation before that.
await driver.tap(find.byValueKey('stop_looping_animation')); // FlutterDriver will time out here.
});
您可以使用 FlutterDriver.runUnsynchronized
:
test('stop looping animation', () async {
await driver.runUnsynchronized(() async {
await driver.tap(find.byValueKey('stop_looping_animation'));
});
});
遇到了类似的问题,这条评论有帮助:https://github.com/flutter/flutter/issues/34503#issuecomment-503545683