Flutter 要运行在所有能显示的设备上。
密歇根大学人机交互博士、Google Flutter 团队高级研究员 董韬 如是说。
《Flutter:最新进展和未来展望》的学习笔记。
今天的学习内容,并不高深,都是一些基础知识,但是学到了几个非常实用的语法,也促使我要好好看一下 Dart 的各个版本更新内容文档了!
Flutter 基本介绍和在中国的发展状况
- 什么是 Flutter
- 2018年 Flutter Live 发布1.0版本
- 特点
- 美观、快速、高效、开放
- 非常受开发者欢迎
- 在中国的发展
- 闲鱼的一位开发者提交的 PR 数量超过了 Google 专职 Flutter 开发的工程师的个人提交数量(震惊)
- Flutter 多平台:Mobile、Web、Desktop、Embedded
多平台远景:Flutter for Web
- 代码库已合并到 Flutter 主 SDK 中
- SDK
- 和移动端最大限度地复用 Flutter framework in Dart(widgets, gestures, etc)
- Flutter Web engine 类似原生的 C++ Flutter engine
- Flutter Web engine
- HTML + CSS 来绘制图形
- 利用浏览器自身的性能优化
- 不担心尺寸兼容
- Canvas 2D 备用绘图选项
- 性能和缩放问题
- 未来计划 CSS Paint API 代替 Canvas 以提高性能,不过浏览器支持不太好
- 依赖 Flutter 框架
- Dart2js compiler
- 在 Google 应用广泛 :Google 广告业务体系等
- 高效、成熟
- HTML + CSS 来绘制图形
- 应用场景
- 作为移动应用的配套程序
- 先体验后下载
- 覆盖更多用户
- 使用桌面端的输入输出需求
- 高度交互元素复用
- 性能
- 桌面浏览器 60FPS 以上
- 移动浏览器
- 一般手机 60FPS
- 差手机 达不到60FPS
- 开发体验
- Widget API 和移动端一致
- 局限和后续研发
- 合并到 Flutter SDK
- 保证所有 widgets 正确渲染
- 性能优化
- 完善对浏览器无障碍功能的支持
- 添加插件系统来使用现有的 JS 库
- 加强开发调试工具的可用性
生态建设:与社区共建的状态管理解决方案
开发体验:“UI as Code” - 编程语言和 IDE 的改进
-
Dart 代码编写 Flutter UI 的优点和改进空间
-
声明式 UI
-
改进空间
- 复杂 UI 逻辑会使用命令式语法,打破代码结构和 UI 视觉结构的一致性
- 死亡嵌套!
-
-
新语法
-
Control Flow Elements in Collections
在集合中使用
if和for来操作 UI -
Spread Operator
...- 展开操作符构建集合时,可以更方便地将小集合动态组合起来,非常实用
-
-
IDE 优化
- UI Guides
- child 和 children 的缩写优化探索
-
以往的改进
- new 关键字非必须
- UI as Code
- UI Guides
Flutter/Dart 近期展望
- 改进 Flutter 和原生混编的机制和开发体验(add-to-app)
- Dart 语言演进 non-nullable, extension methods, Dart runtime 增加 FFI(C/C++ interop)
- 更容易理解的报错信息
- Flutter Web 性能优化,Flutter Desktop 功能完善,Flutter 路线图