小编Cra*_*arr的帖子

Flutter 中 `Future.delayed(Duration.zero, ...)` 和 `SchedulerBinding.instance.addPostFrameCallback(...)` 有什么区别?

/sf/answers/3462080261/BuildContext中所示,在 Flutter 中初始渲染小部件后(即在 中initState),本质上有两种访问方式:

Future.delayed(Duration.zero, () {
  // context can be used here...
});
Run Code Online (Sandbox Code Playgroud)

SchedulerBinding.instance.addPostFrameCallback((_) {
  // context can be used here...
});
Run Code Online (Sandbox Code Playgroud)

这两种方法有什么区别?使用一种方法相对于另一种方法有什么优势吗?是否有任何我没有看到的隐藏副作用?


根据我自己的探索,如果我在同一个小部件中使用这两种方法initState,则执行回调的顺序与注册回调的顺序相同。我查看了 Flutter 源代码Future.delayedSchedulerBinding.instance.addPostFrameCallback但我不太明白发生了什么。

flutter

15
推荐指数
1
解决办法
5744
查看次数

标签 统计

flutter ×1