runApp
runApp(widget)是Flutter应用的入口,用于加载给定的widget,并将其加载到 屏幕 上

runApp(widget)的函数定义如下:- 可以看到,其实就是调用了
WidgetsFlutterBinding里面的方法,下面分别从源码处看WidgetsFlutterBinding 类、ensureInitialized()、scheduleAttachRootWidget(app)、..scheduleWarmUpFrame()的定义及作用
WidgetsFlutterBinding
- 从类声明上可以看到,这是一个将
Flutter framework与Flutter engine绑定到一起的类,所以继承了 七个XXXBinding类
ensureInitialized()
scheduleAttachRootWidget(app)
- 可以看到,
ensureInitialized()返回值是WidgetsBinding类型,而scheduleAttachRootWidget(app)就是该类的一个方法,所以下面来看看WidgetsBinding
- 接着很顺利地来到
WidgetsBinding中看看scheduleAttachRootWidget()的定义:
- 接着往下看,
attachRootWidget(widget)到底干了什么
- 可以看到,
attachRootWidget(widget)内部其实是调用了attachToRenderTree(),将WidgetTree (RenderObjectToWidgetAdapter)、ElementTree (renderViewElement)、RenderTree (renderView)联系并建立起来
scheduleWarmUpFrame
三棵树的关系
WidgetTree
ElementTree
RenderTree


引用/参考
- Author:CoderWdd
- URL:https://www.wuinsights.top//article/224e9e95ac6e
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts