美文网首页
Flutter启动流程

Flutter启动流程

作者: Shineyok | 来源:发表于2021-12-09 13:58 被阅读0次

Flutter启动代码如下


void main() {

runApp(MyApp());

}

class MyApp extends StatelessWidget {

const MyApp({Key key}) : super(key: key);

@override

Widget build(BuildContext context) {

return Container();

}

}

查看runApp方法可发现


void runApp(Widget app) {

WidgetsFlutterBinding.ensureInitialized()

..scheduleAttachRootWidget(app)

..scheduleWarmUpFrame();

}

通过WidgetsFlutterBinding.ensureInitialized() 方法可发现,此方法用来初始化binding


static WidgetsBinding ensureInitialized() {

if (WidgetsBinding.instance == null)

WidgetsFlutterBinding();

return WidgetsBinding.instance;

}

由此可发现binding是一系列单例,在通过WidgetsFlutterBinding.ensureInitialized() 方法时,同时初始化了WidgetsFlutterBindingBindingBaseGestureBindingSchedulerBindingServicesBinding等。

  • BindingBase:是所有类的基类,负责初始化其他类,初始化一些Native相关信息(如iOS、android、fuchsia、macOS、Linux、Windows)、注册native事件
  • GestureBinding:提供window.onPointerDataPacket回调,接受Native事件,负责事件转换及分发
  • SchedulerBinding: 使用了window.scheduleFrame来通知Native及使用window.onBeginFramewindow.onDrawFrame回调来接收消息,主要是负责通知Native在下一侦的事件下发与事件注册,当我们调用setState后,就会触发此类的方法,等待事件下发后进行渲染
  • ServicesBinding: 使用window.onPlatformMessage回调,负责通道相关的初始化及通信相关的处理
  • PaintingBinding: 与绘制相关的函数绑定,还处理一些图片渲染相关的缓存
  • SemanticsBinding: 注册平台相关的辅助函数
  • RendererBinding: 初始化PipelineOwnerrenderViewonMetricsChangedonTextScaleFactorChangedonPlatformBrightnessChangedonSemanticsEnabledChangedonSemanticsAction等,用于监听并处理平台渲染相关如字体、状态栏改变时的事件,是渲染输与Flutter engine沟通的桥梁
  • WidgetsBinding: 初始化BuildOwner,注册window.onLocaleChangedonBuildScheduled等回调。它是Flutter widget层与engine的桥梁。

相关文章

  • Flutter启动流程源码分析

    Flutter启动流程源码分析 Flutter的启动从java代码层面上看是离不开FlutterApplicati...

  • Flutter启动流程

    Flutter是怎么启动起来的,是在Android的Activity的启动之后吗?等等这样的问题,在这个文章中将被...

  • Flutter启动流程

    Flutter启动代码如下 查看runApp方法可发现 通过WidgetsFlutterBinding.ensur...

  • Flutter 热更新-1.12.13+hotfix.5启动流程

    这里分析flutter作为module情况下Android端启动流程。 1.12.13版本通过下述方法启动Flut...

  • Flutter启动流程解析

    使用Flutter开发项目时,只需要调用入口函数main(MyApp()),Flutter项目就运行起来了;之后进...

  • flutter 面试

    一、flutter启动流程1.实例化WidgetsFlutterBinding类,2.创建组件树attachRoo...

  • flutter-App启动

    一:App启动 三行代码代表了Flutter APP 启动的三个主流程: 二:binding初始化(Widgets...

  • Flutter启动流程源码分析

    前言 相信大家在学习Flutter的开始阶段都看过Flutter的架构图,如下 我们知道Flutter的应用层代码...

  • Flutter启动流程简析

    今天基于Android分析下Flutter的启动流程,首先看下官网提供的框架图,最下面一层Embedder是特定的...

  • Flutter 启动流程源码解析

    一: 概述 本文源码均复制自 Stable 1.17.5, 非核心代码有删减 我翻了flutter源码调用顺序,并...

网友评论

      本文标题:Flutter启动流程

      本文链接:https://www.haomeiwen.com/subject/cbsffrtx.html