如何在 Dart/Flutter 中永不完成 Futures?

How to do never finishing Futures in Dart/Flutter?

想象以下场景:一个小部件显示“正在加载”屏幕,直到异步回调完成,然后它切换到另一个小部件。

我正在尝试测试它,特别是显示“正在加载”屏幕的部分。所以我试图做的是模拟异步回调并将其设置为类似 Future.delayed(Duration(days: 1)) 这样我可以确定它永远不会在该特定测试中完成。

这似乎可行,但 flutter 对我很生气,并报告有关挂起计时器的问题。由于某种原因,所有计时器都必须完成才能使测试成功完成。

那么如何正确编写这个测试用例呢?我怎样才能创造一个永远不会结束并且不会 运行 陷入计时器问题的未来?

当我准备放弃时,我从 Dart 文档中发现 Future.any([]) 基本上实现了这一点。

If [futures] is empty, or if none of its futures complete, the returned future never completes.

另一种解决方案是使用 Completer。

未来:完成者()。未来,

会成功的。但是,阅读您的描述,我觉得您可能想要重新考虑您的方法,因为需要一个永不完成的未来听起来像您的代码本身可能是问题所在。