Flutter 面试问题

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>(
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值