论坛凯发k8国际首页 web前端技术论坛

【15章】慕课甄选-凯发k8国际

浏览 162 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2024-01-16  
【15章】慕课甄选-2024年flutter零基础极速入门到进阶实战
网盘地址:https://pan.baidu.com/s/18fpbj4l4wekoxtk4diq5xq 提取码:b6ho
腾讯微云下载地址:https://share.weiyun.com/s9t7rfox 密码:f6cxdf


视频课程下载——慕课甄选-2024年flutter零基础极速入门到进阶实战,附源码,课程包更新。

flutter是google开源的构建用户界面(ui)工具包,帮助开发者通过一套代码库高效构建多平台精美应用,支持移动、web、桌面和嵌入式平台。 [5]flutter 开源、免费,拥有宽松的开源协议,适合商业项目。

flutter的高性能主要靠两点来保证:
采用 dart 语言开发
使用自己的渲染引擎来绘制 ui

dart语言在jit模式下,执行速度与 javascript 基本持平。但是它支持aot,以 aot模式运行时,javascript 便远远追不上了,执行效率也就大大提升。并且flutter使用自己的渲染引擎绘制ui,布局数据都由dart语言直接控制,性能开销比较可观

flutter框架分三层 framework,engine, embedder
flutter framework
framework使用dart语言实现,包括ui,文本,图片,按钮等widgets,渲染,动画,手势等。此部分的核心代码是flutter仓库下的flutter package,以及sky_engine仓库下的 io, async, ui(dart:ui库提供了flutter框架和引擎之间的接口)等package。
flutter engine
engine使用c 实现,主要包括:skia, dart 和 text。
skia是开源的二维图形库,提供了适用于多种软硬件平台的通用api。其已作为google chrome,chrome os,android, mozilla firefox, firefox os等其他众多产品的图形引擎,支持平台还包括windows, macos, ios,android,ubuntu等。
dart 部分主要包括:dart runtime,garbage collection(gc),如果是debug模式的话,还包括jit(just in time)支持。release和profile模式下,是aot(ahead of time)编译成了原生的arm代码,并不存在jit部分。
text 即文本渲染,其渲染层次如下:衍生自 minikin的libtxt库(用于字体选择,分隔行);hartbuzz用于字形选择和成型;skia作为渲染/gpu后端,在android和fuchsia上使用freetype渲染,在ios上使用coregraphics来渲染字体。
embedder
embedder是一个嵌入层,通过该层把flutter嵌入到各个平台上去,embedder的主要工作包括渲染surface设置, 线程设置,以及插件等。平台(如ios)只是提供一个画布,剩余的所有渲染相关的逻辑都在flutter内部,这就使得它具有了很好的跨端一致性。


flutter与其它大多数跨平台框架不同,因为flutter既不使用webview,也不使用操作系统的原生控件。相反,flutter使用自己的高性能渲染引擎来绘制widget。这样不仅可以保证在android和ios上ui的一致性,而且也可以避免对原生控件依赖而带来的限制及高昂的维护成本。
flutter使用skia作为其2d渲染引擎,skia是一个 2d的绘图引擎库,其前身是一个向量绘图软件,chrome和 android均采用 skia作为绘图引擎。skia提供了非常友好的 api,并且在图形转换、文字渲染、位图渲染方面都提供了友好、高效的表现。skia是跨平台的,所以可以被嵌入到 flutter的 ios sdk中,而不用去研究 ios闭源的 core graphics / core animation。
目前flutter默认支持ios、android、fuchsia(google新的自研操作系统)三个移动平台。但flutter亦可支持web开发(flutter for web)和pc开发,本书的示例和介绍主要是基于ios和android平台的,其它平台读者可以自行了解。


flutter的优势
开发效率高毫秒级的热重载,修改后,您的应用界面会立即更新。使用丰富的、完全可定制的widget在几分钟内构建原生界面。
富有表现力和灵活的ui快速发布聚焦于原生体验的功能。分层的架构允许您完全自定义,从而实现难以置信的快速渲染和富有表现力、灵活的设计。
原生性能flutter包含了许多核心的widget,如滚动、导航、图标和字体等,这些都可以在ios和android上达到原生应用一样的性能。
flutter的开发语言
flutter采用的是dart作为开发框架和widget的语言。

dart在以下主要标准上得到高分:
开发人员的效率flutter的主要价值主张之一是通过让开发人员使用相同的代码库为ios和android创建应用程序,从而节省了工程资源。使用高效的语言可以进一步加速开发周期,并使flutter更具吸引力。这对我们的framework团队和开发人员都非常重要。大部分flutter功能都是用dart实现,因此我们需要在10万行代码时能保持高效的而不会牺牲framework和widget的可读性。
面向对象虽然我们可以使用非面向对象的语言,但这意味着要重新解决几个难题。另外,绝大多数开发人员都具有面向对象开发的经验,因此更容易学习如何使用flutter进行开发。
可预测,高性。借助flutter,我们希望使开发人员能够快速创建流畅的用户体验。为了实现这一点,我们需要能够在每个动画帧中运行大量的代码。这意味着我们需要一种既能提供高性能又能提供可预测性能的语言,而不会出现会导致丢帧的周期性暂停。
快速内存分配 flutter框架使用函数式流,它很大程度上依赖于底层的内存分配器,从而有效地处理小的、短期的内存分配会非常重要,所以在缺乏此功能的语言中flutter无法有效地工作。
 
global site tag (gtag.js) - google analytics
网站地图