简介

作者: 寒冬_腊月 | 来源:发表于2020-04-11 21:31 被阅读0次

Flutter 特点

跨平台,在Android和iOS平台上创建高质量的原生体验,不使用webview, 而是使用自己的高性能渲染引擎来绘制widget

Flutter使用Skia作为其2D渲染引擎,Skia是Google的一个2D图形处理函数库

程序主要有两种运行方式:静态编译与动态解释。静态编译的程序在执行前全部被翻译为机器码,而解释执行的则是一句一句边翻译边运行

JIT(Just-in-time)即“即时编译”, 用于开发阶段,这样就避免了每次改动都要进行编译,极大的节省了开发时间,JIT的代表则非常多,如JavaScript、python等

AOT (Ahead of time) 即 “提前编译”, 用于发布阶段,生成高效的ARM代码(Android上是.so文件)以保证应用性能

声明式 UI

从 Win32 到 Web 再到 Android 和 iOS,框架通常使用一种命令式的编程风格来完成 UI 编程。这可能是你最熟悉的风格 — 你手动构建一个全功能的 UI 实例,比如一个 UIView 或其他类似的,在随后 UI 发生变化时,使用方法或 Setter 修改它。

为了减轻开发人员的负担,无需编写如何在不同的 UI 状态之间进行切换的代码, Flutter 相反,让开发人员描述当前的 UI 状态,并将转换交给框架。

架构

image.jpeg

Flutter Framework

这是一个纯 Dart实现的 SDK,它实现了一套基础库,自底向上,我们来简单介绍一下:

  • 底下两层(Foundation和Animation、Painting、Gestures)在Google的一些视频中被合并为一个dart UI层,对应的是Flutter中的dart:ui包,它是Flutter引擎暴露的底层UI库,提供动画、手势及绘制能力。

  • Rendering层,这一层是一个抽象的布局层,它依赖于dart UI层,Rendering层会构建一个UI树,当UI树有变化时,会计算出有变化的部分,然后更新UI树,最终将UI树绘制到屏幕上,这个过程类似于React中的虚拟DOM。Rendering层可以说是Flutter UI框架最核心的部分,它除了确定每个UI元素的位置、大小之外还要进行坐标变换、绘制(调用底层dart:ui)。

  • Widgets层是Flutter提供的的一套基础组件库,在基础组件库之上,Flutter还提供了 Material 和Cupertino两种视觉风格的组件库。而我们Flutter开发的大多数场景,只是和这两层打交道。

Flutter Engine

这是一个纯 C++实现的 SDK,其中包括了 Skia引擎、Dart运行时、文字排版引擎等。在代码调用 dart:ui库时,调用最终会走到Engine层,然后实现真正的绘制逻辑。

embedder提供的4种task runner

  • Platform Task Runner:处理来自平台(Android/iOS)的消息
  • UI Task Runner:执行渲染逻辑、处理native plugin的消息、timer、microtask、异步I/O操作处理等
  • GPU Task Runner:执行GPU指令
  • IO Task Runner:执行I/O任务

Flutter 的构建模式

三种构建模式:

  • 开发过程中,需要使用 热重载 功能,请选择 debug 构建模式

  • 当你需要分析性能的时候,选择使用 profile 构建模式;

  • 发布应用的时候,需要选择使用 release 构建模式。

单线程模型

dart默认运行在Main函数存在线程,在dart中称之为isolate,这个线程我们可称之为main isolate

文件I/O和网络调用并不是在Dart层做的,而是由操作系统提供的异步线程,他俩把活儿干完之后把结果刚到队列中,Dart代码只是执行一个简单的读动作。

相关文章

  • 18旅游二班各组自我简介汇总

    一组简介 二组简介 三组简介 四组简介 五组简介 六组简介 七组简介 八组简介

  • 简介

    上辈子,洛幽喜欢了东凡一辈子,没有结果,之后她死了,她不后悔,只是为什么她一睁眼,嗯?捏了捏自己的脸,她这是回到了...

  • 简介

    1.主动地去阅读。 2.阅读目的:获得资讯,获得理解 前者为了增进资讯,获得信息,不能增加理解力。后者为了理解更多...

  • 简介

    姓名:赵金星 电话:13903984903 坐标:河南三门峡市陕州区。 三个标签的自我介绍: 1.时间管理践行者 ...

  • 简介

    朱凝不过打错个字,便被天打雷劈回古代。 为毛别人穿个废柴嫡女,她穿个废柴庶女?地位更低了哎 哇喔,别人嫁王爷,她嫁...

  • 简介

    凌波网络考试系统,是一套运行于Windows系统之上的无纸化网络考试软件。包括试卷编辑、分发试卷、学生答卷、自动阅...

  • 简介

    名字:笨小孩 不是富二代的笨小孩为了生活选择了编程。在大多数人眼里可能感觉编程是很无聊很辛苦经常加班的事情,其实人...

  • 简介

    A Native Client web application consists of JavaScript, H...

  • 简介

    选择django作为毕设项目,和日后工作内容。故在简单得做了一个blog和毕设系统之间,想深入了解django,会...

  • 简介

    被乞丐养大的孩子,像是被贴上来了另类的标签,即使成绩优异也无人与她作伴,一头乌黑的长发,明亮却又冷漠的眼睛,本...

网友评论

      本文标题:简介

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