Flutter 的初始化
1.Flutter App的入口就是函数runApp()
2.点击runApp()函数可以看到widgets/binding.dart中
void runApp(Widget app) { WidgetsFlutterBinding.ensureInitialized() ..attachRootWidget(app) ..scheduleWarmUpFrame(); }
1. 点进去WidgetsFlutterBinding (看名称是将Widget与Flutter 绑在一起的意思)可以看到ensureInitialized函数是返回一个WidgetsBinding.instance
单例
总体上来讲是把window
提供的API分别封装到不同的Binding里。我们需要重点关注的是SchedulerBinding:调度绑定
RendererBinding:渲染绑定,
通过pipelineOwner
间接持有render tree的根节点RenderView
。
WidgetsBinding:组件绑定,
持有element tree的根节点RenderObjectToWidgetElement
。
这3个是渲染流水线的重要存在。
2...attachRootWidget(app):
void attachRootWidget(Widget rootWidget) { _renderViewElement = RenderObjectToWidgetAdapter<RenderBox>(