【发布时间】:2021-01-18 23:36:53
【问题描述】:
如https://stackoverflow.com/a/49458289/5150593 中所见,在 Flutter 中(即在 initState 中)初始渲染小部件后,基本上有两种访问 BuildContext 的方法:
Future.delayed(Duration.zero, () {
// context can be used here...
});
和
SchedulerBinding.instance.addPostFrameCallback((_) {
// context can be used here...
});
这两种方法有什么区别?使用一种方法比另一种方法有什么优势吗?是否有任何我没有看到的隐藏副作用?
根据我自己的探索,如果我在同一个小部件的initState 中同时使用这两种方法,回调的执行顺序与注册回调的顺序相同。我查看了 Future.delayed 和 SchedulerBinding.instance.addPostFrameCallback 的 Flutter 源代码,但我不太明白发生了什么。
【问题讨论】:
标签: flutter