欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Flutter系统概述

程序员文章站 2022-03-28 16:14:05
框架图整个Flutter系统由三部分组成,由上至下依次为:Framwork(动态库),Engine(渲染引擎),Embedder(嵌入层)。Framwork(动态库)Framework 层全部使用Dart 编写,它实现了一套基础库,用于处理动画、绘图和手势,并且封装了一套UI组件库,并预写了Android(MaterialDesign)和 iOS的(Cupertino)风格的UI,这个纯Dart实现的SDK被封装为了一个叫作dart:ui的Dart库,极大方便了开发移动端。Material封...

框架图

Flutter系统概述
整个Flutter系统由三部分组成,由上至下依次为:Framwork(动态库),Engine(渲染引擎),Embedder(嵌入层)。

Framwork(动态库)

Framework 层全部使用Dart 编写,它实现了一套基础库,用于处理动画、绘图和手势,并且封装了一套UI组件库,并预写了Android(MaterialDesign)和 iOS的(Cupertino)风格的UI,这个纯Dart实现的SDK被封装为了一个叫作dart:ui的Dart库,极大方便了开发移动端。

  • Material
    封装了各种安卓风格的组件

  • Cupertino
    为iOS风格组建集合

  • Widgets
    各种widget组件的组合。flutter核心思想为“一切皆widget”,各种小组件之间进行相互组合来共同构建不同的用户界面。Flutter中widget可以是一个Text,也可以是Color,同样也可以是Container。

    widget类继承关系
    Flutter系统概述

  • Rendering
    Rendering是一个界面的渲染库,在Flutter中界面的渲染主要包括三个阶段:布局(Layout),绘制(Painting),合成(Composite)

  • Animation
    Animation是一个动画相关类,可以通过这个类创建一些基础的动画,补间动画(Tween Animation),类似于Android中的ValueAnimator和iOS中的Core Animation

  • Painting
    Painting封装了来自Engine层的绘制接口

  • Gesture
    处理手势动作和手势相关交互

  • Foundation
    底层框架,定义底层工具类和方法,提供其他层使用

Engine(引擎)

Engine是Flutter引擎,引擎主要负责图形绘制(Skia)、文字排版(libtxt)和提供Dart运行时,引擎全部使用C++ 实现,它是dart的一个运行时,它可以以JIT、JIT Snapshot或者AOT的模式运行Dart代码

  • Skia
    Skia是一个谷歌出品的开源二维图形库,提供常用的API,并且可以在多种软硬件平台上运行。和其他跨平台方案不同Flutter没有使用原生的UI 和 绘制框架,以此来保证Flutter的高性能体验

  • Dart在 JIT模式下,速度与 JavaScript基本持平。但是 Dart支持 AOT,当以 AOT模式运行时,JavaScript便远远追不上了。速度的提升对高帧率下的视图数据计算很有帮助。

Dart 语言特征 :
语言类型 : 强类型语言 ;
编译类型 : JIT 即时编译 ; ( 编译类型有 JIT / AOT 两种类型 )
JIT 即时编译 : 即时编译 , 在程序运行时一边解释一边运行 ;
1,运行时效率较低
2,可移植性强
AOT 静态编译:静态编译 , 在开发时就要将代码编译成机器码 ;
1, 运行时效率高
2, 不可移植

Embedder(嵌入层)

主要作用是考虑不同平台的特性将Flutter嵌入其中,其中主要负责的工作有:

  • Render Surface Setup(渲染设置)
  • Native Plugins(插件管理)
  • Packaging(打包)
  • Thread Setup(线程管理)
  • Event Loop Interop(事件循环的交互)

本文地址:https://blog.csdn.net/qq_18133317/article/details/107596956

相关标签: Flutter