参考资料1:https://pan.baidu.com/s/1pD7W-haO5FbbGsu0t3sA_w 提取码: wv6m
参考资料2:https://share.weiyun.com/mDuF95rR 密码:c7r3ec
一、Flutter基础概念
Flutter 框架的核心概念是 Widget、Element、RenderObject。Widget 是 Flutter 应用的构建块,是一种不可变的树形结构,描述了应用的布局和状态。Element 是 Widget 的实例化表示,用于连接 Widget 和 RenderObject。RenderObject 是 Flutter 框架的渲染树节点,负责实际的 UI 布局和绘制。
Flutter 应用的根 Widget 是整个应用的顶层容器,所有的 Widget 都由根 Widget 派生而来。Flutter 框架采用了响应式编程模式,每个 Widget 都可以根据其状态和父 Widget 的状态进行更新。这种响应式编程模式使得 Flutter 应用可以实现高度可定制的交互界面和流畅的用户体验。
二、Flutter 核心架构
Flutter 框架的核心架构由三个主要组件构成:Flutter Engine、Flutter Framework 和 UI 库。
Flutter Engine 是一个高效的运行时引擎,负责解析和运行 Dart 代码,并将其转换为原生平台所支持的渲染树。Flutter Engine 具有高效的 JIT(即时编译)和 AOT(提前编译)能力,能够大大提高应用的运行速度和性能。
Flutter Framework 是一个基于 Dart 语言的框架,包含了 Flutter 应用开发的所有核心库和工具。Flutter Framework 提供了丰富的 UI 组件库、布局库、动画库、网络请求库等,使得开发者可以快速构建复杂的移动应用。
UI 库是 Flutter 框架的最终表现形式,它包含了各种 UI 控件和主题。UI 库是可组合的、可扩展的,开发者可以根据自己的需求选择和组合不同的 UI 控件和主题,打造出自己的个性化应用。
三、Flutter 组件库
Flutter 框架提供了丰富的组件库,包括基础 UI 控件、布局控件、动画控件、卡片控件、滑块控件、开关控件等。这些组件可以轻松地组合和使用,使得开发者可以快速构建复杂的移动应用。
以下是一些常用的 Flutter 组件:
Text:文本控件,用于显示文本内容。
Icon:图标控件,用于显示各种图标。
Button:按钮控件,用于实现各种按钮功能。
Container:容器控件,用于包含其他 UI 控件。
Center:居中布局控件,用于将子控件居中显示。
Row:行布局控件,用于将子控件水平排列。
Column:列布局控件,用于将子控件垂直排列。
Card:卡片控件,用于显示卡片样式的内容。
Slide:滑块控件,用于实现滑块功能。
Switch:开关控件,用于实现开关功能。
除了官方提供的组件库,Flutter 还支持自定义组件和第三方组件,开发者可以根据自己的需求设计和使用组件。
四、渲染模型
你可能思考过:既然 Flutter 是一个跨平台的框架,那么它如何提供与原生平台框架相当的性能?
让我们从安卓原生应用的角度开始思考。当你在编写绘制的内容时,你需要调用 Android 框架的 Java 代码。 Android 的系统库提供了可以将自身绘制到 Canvas 对象的组件,接下来 Android 就可以使用由 C/C++ 编写的 Skia 图像引擎,调用 CPU 和 GPU 完成在设备上的绘制。
通常来说,跨平台框架都会在 Android 和 iOS 的 UI 底层库上创建一层抽象,该抽象层尝试抹平各个系统之间的差异。这时,应用程序的代码常常使用 JavaScript 等解释型语言来进行编写,这些代码会与基于 Java 的 Android 和基于 Objective-C 的 iOS 系统进行交互,最终显示 UI 界面。所有的流程都增加了显著的开销,在 UI 和应用逻辑有繁杂的交互时更为如此。
相比之下,Flutter 通过绕过系统 UI 组件库,使用自己的 widget 内容集,削减了抽象层的开销。用于绘制 Flutter 图像内容的 Dart 代码被编译为机器码,并使用 Skia 进行渲染。 Flutter 同时也嵌入了自己的 Skia 副本(未来会迁移到 Impeller),让开发者能在设备未更新到最新的系统时,也能跟进升级自己的应用,保证稳定性并提升性能。
五、安装Flutter SDK
下载 Flutter SDK: 首先,您需要下载 Flutter SDK。您可以在 Flutter 的官方网站 上找到下载链接。根据您的操作系统选择正确的下载链接(Windows、macOS 或 Linux)。
解压文件: 下载完成后,将下载的压缩文件解压到您希望安装 Flutter 的目录。例如,在您的用户主目录下(对于 macOS 和 Linux)或在 C 盘根目录下(对于 Windows)。
设置环境变量: 为了能够在命令行中运行 Flutter 命令,您需要将 Flutter 的 bin 目录添加到系统的 PATH 环境变量中。具体的步骤因操作系统而异:
Windows: 将解压后的 flutter/bin 目录添加到系统环境变量 PATH 中。
macOS 和 Linux: 在终端中执行以下命令,将 Flutter 添加到 PATH 中:
export PATH="$PATH:`pwd`/flutter/bin"
检查安装: 在命令行中运行以下命令,确认 Flutter 是否已成功安装:
flutter --version
六、三、 Flutter的优点
1、跨平台的优点不必多说
2、Flutter默认Meteria UI,开发起来贼溜
3、hot reload的开发模式非常方便,基本上做到实时查看改变的UI
4、将来发布的 Fuchsia OS 就钦定了 Flutter 作为 UI Toolkit
5、从性能上来讲,Flutter是加分的。
七、Flutter的缺点
1、使用Dart开发容易造火箭
2、目前处于beta版本,商业化的话还需要再等等。
3、对于IOS UIKit来说,Flutter Meterial Design还不能取代之,只能作为一种补充。
4、在Android 平台上,一个架构的SO居然要7M左右,简直不能忍。
有疑问加站长微信联系(非本文作者)