有没有办法让 CircularProgressIndicator 或 Future 持续最少的时间(在发出 HTTP 请求时)?

Kel*_*han 3 dart flutter

对于上下文,假设我有 Flutter 代码,它显示CircularProgressIndicator正在从 API 获取代码:

Future<void> getItems() async {
  setState(ViewState.Busy);
  items = await _api.getItems();
  setState(ViewState.Idle);
}
Run Code Online (Sandbox Code Playgroud)

为了使CircularProgressIndicator不会只显示几分之一秒(我发现这会扰乱相关动画的流程),我想让这个指示器显示最少的时间。

我可以使用 Future API 或计时器来解决这个问题,通过某种方式设置HTTP 请求未来可以花费的最短时间。我怎样才能做到这一点?

dak*_*ojo 7

我经常使用这种模式。Future-wait 接受一个 Futures 列表。它并行执行它们,并且返回都将完成。我觉得它看起来干净多了。

https://api.dartlang.org/stable/2.3.1/dart-async/Future/wait.html

  List<Future> futures = [];
  futures.add(Future.delayed(Duration(seconds: 1)));
  futures.add(_api.getItems());
  await Future.wait(futures);
Run Code Online (Sandbox Code Playgroud)