Flutter APP跟其他应用程序一样,入口也是在main方法,其内部就是一行代码,调用runAppp方法,将我们定义的根widget添加到界面上。作为Flutter的入口函数,我们有必要了解其背后的工作原理,runApp都做了些啥,能让我们的widget显示在界面上,同事支持各种事件操作,界面刷新等。
首先我们来看看runApp源码:
// App是一个widget,是Flutter应用启动以后要展示的第一个组件
void runApp(Widget app) {
// 1. 确保WidgetsFlutterBinding被初始化。
WidgetsFlutterBinding.ensureInitialized()
// 2. 将传递过来的根widget app attach到某个地方
..scheduleAttachRootWidget(app)
// 3. 调度一个‘热身’帧
..scheduleWarmUpFrame();
}
接下来我们就继续对着runApp内三行代码进行逐一突破:
1、WidgetsFlutterBinding初始化
直接看ensureInitialized()源码:
// WidgetsFlutterBinding可以理解为是widget框架和Flutter引擎的桥梁
class WidgetsFlutterBinding extends BindingBase with GestureBinding, SchedulerBinding, ServicesBinding, PaintingBinding, SemanticsBinding, RendererBinding,