Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面
一份代码可以同时生成 iOS 和 Android 两个高性能、高保真的应用程序
-
Flutter 目标就是使开发人员能够交付在不同平台上都感觉自然流畅的高性能应用程序,并且兼容 滚动行为、排版、图标等方面的差异
-
Flutter 的开发语言是 Dart,如果您使用过 Java 或 JavaScript 之类的语言,则能够很快上手,甚至有一些 Flutter 应用是没有编程经验的人写的
现如今,Flutter 已经被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的
Flutter 架构
Flutter 的架构主要分成三层: 分别是 Framework , Engine 和 Embedder
Framwork
这一层纯 Dart 实现,使用了两种设计风格 Material Design 和 Cupertino (针对iOS) 风格
- Widgets 层: 一套基础组件库
- Rendering 层: UI 布局渲染
- Animation、Painting、Gestures、Foundation 是 Dart: UI 库提供的对接底层动画,手势识别等功能
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 嵌入到各个平台上去,引擎移植到平台的中间层代码 渲染设置,原生插件,打包,线程管理,事件循环交互操作
Flutter 优势在哪里?
开发效率高
毫秒级的热重载,修改后,您的应用界面会立即更新;使用丰富的、完全可定制的 widget 在几分钟内构建原生界面
富有表现力和灵活的UI
快速发布聚焦于原生体验的功能;分层的架构允许您完全自定义,从而实现难以置信的快速渲染和富有表现力、灵活的设计
原生性能
Flutter 包含了许多核心的 widget,如滚动、导航、图标和字体等,这些都可以在 iOS 和 Android 上达到原生应用一样的性能
Flutter 好学吗?
有很多小伙伴告诉我他正在或打算学 Flutter ,但他们中的大部分都遇到了这些麻烦问题:
- 看了不少 Flutter 的教学视频,但感觉 Flutter 太重视应用层 API 各个参数的介绍以及实现细节,有点学起来无从下手的感觉
- Flutter 从语言到开发框架都是全新的,技术栈的积累必须从头开始,学起来很费力
其实要想学好 Flutter,不应该仅停留细节层面,更要深入它的原理、设计思路和通用理念
但是现在市面上有关于 Flutter 的系统学习资料比较少,不过之前有收集整理到一份大厂项目开发精心整理出来的 Flutter 高级工程师学习思维导图,相信能够帮助大家快速上手 Flutter 开发应用,掌握精髓并建立属于自己的知识体系
Flutter 高级工程师学习思维导图
并且通过这张思维导图;融合了这些年的工作经历及网上相关资料查询,最终将其整合了成了一个 Flutter 高级开发学习手册;有需要 完整版学习手册 的朋友:可点击此处查看获取方式 或者私信发送 “Flutter” 即可 直达获取;希望大家通过阅读这份学习手册,能够查漏补缺
Flutter 编译原理
- Flutter 架构层
- Flutter 编译模式
- Flutter 编译过程
- Flutter 编译产物
Flutter 3.3 项目实战
- Flutter 底部导航路由实现
- 底部导航实现
- Widget 属性说明
- Page 存在重复创建的问题
- Flutter 创建侧滑菜单
- 个人中心制作
- 简单个人中心
- 商城会员中心
- Flutter 实战 APP 入门及主页
Flutter 通信机制
- Message Loop 原理及应用
- 原生通信:Platform Channel (MethodChannel、EventChannel)以及遇到的问题
- Flutter 异步通信
文章篇幅有限;手册内容就不完全展示了,有需要完整版 Flutter 学习手册的小伙伴:可以私信发送 “Flutter”,即可 直达获取
整理不易,如果觉得内容对你有所帮助的话,可以点赞转发分享一下哦~
最后祝各位开发者早日精通 Flutter ,攀登上更高的高峰