Flutter是跨端的解决方案中Skia磨掉了平台之间用户体验差别,Dart语言是flutter的具体实现。
Dart语言同时支持即时编译JIT和事前编译AOT,在开发阶段使用JIT,开发周期短,可以通过状态热重载,而发布期使用AOT,本地代码执行更高效,代码性能和用户体验也更加卓越。Dart避免了抢占式调度和共享内存,可以在没有锁的情况下进行对象的分配和垃圾回收,在性能方面表现不错。
Flutter架构图
Framework层是包含动画 图形绘制 手势,这些都是可以统一调用API适配不同平台
Engine层是包含Skia Dart Text,实现了flutter的渲染引擎,文字排版,时间处理和Dart运行时等功能,Skia和Text为上层接口提供了调用底层渲染和排版功能,Dart则为Flutter提供了运行时调用Dart和渲染引擎的能力,而Engine是将这两者组合起来,从而生成数据中实现试图渲染。
Embedder是操作性层,实现了渲染Surface设置,线程设置,以及平台插件等平台相关性的适配。
项目结构:
flutter工程实际上同时内嵌了android和iOS原生工程的父工程。
我们在lib目录下进行flutter代码开发,在某些特殊场景下的原生则在对应的Android和iOS工程中提供相应的代码实现,供对应flutter代码引用。
widget字面的意思是小控件,在flutter中包含应用,视图,视图控制器,布局等在内的概念。flutter的核心设计思想便是一切皆widget。
widget是组件视觉效果的封装是UI界面的载体,还提供build方法来构建UI界面。
以数据驱动视图更新,这样代码可以更加精炼,逻辑也可以更清晰。状态的更改一定要配合使用setState,通过这个方法调用,flutter就在底层标记widget的状态,随后触发重建。UI 编程思维方式转换。