1、两个状态树分别是什么,并写出其对应的生命周期:
- StatefulWidget:
正常情况:initState -> didChangeDependencies -> build ->deactivate->dispose
JIT热更新时:reassemble ->build - StateLessWidget:
build - 其中didChangeDependencies方法
不仅在initState后执行,在InheritedWidget,provider共享状态树 数据发生变化时也执行。
2、mixin extends implements 之间的关系:
extends: 继承单个类
implements:dart没有关键词interface,可用抽象类
mixin: 类似多继承,mixin多个时,按继承的最后类来实现。
3、flutter使用了两种编译方式,分别是什么:
- JIT (just in time) 即时编译,用在flutter 热更新上:
吞吐量高,有运行时性能加成,可以跑得更快,并可以做到动态生成代码等,但是相对启动速度较慢,并需要一定时间和调用频率才能触发 JIT 的分层机制。 - AOT (Ahead Of Time)运行前编译,用在构建apk:
内存占用低,启动速度快,可以无需 runtime 运行,直接将 runtime 静态链接至最终的程序中,但是无运行时性能加成,不能根据程序运行情况做进一步的优化
4、在树中是如何做到数据共享的:
本质上都是经过数据共享(InheritedWidget)来实现,
数据发生变化时,会把所有子节点树依赖数据共享树都更新。
网友评论