likes
comments
collection
share

Google I/O 2023 - 一文快速总结 Flutter & Dart 的现状和未来

作者站长头像
站长
· 阅读数 24

随着 Google I/O 2023 的发布, Flutter 3.10 和 Dart 3.0 也都正式发,不得不说如今 Dart 的版本号终于快追上 Flutter 得版本号了,特别随着 Dart 3 的发布, Flutter 在 records 和 patterns 的加持下,开发体验终于开始步入现代化语言的进程。

对于 Flutter 开发者来说,Flutter 3.10 和 Dart 3.0 可以说是新的分水岭,详细介绍可见下方链接,接下来我们就来简单总结一下吧。

Flutter 3.10

Flutter 3.10 严格意义上讲并不算特大更新,因为它不是大家想象中的 4.0 ,但是 3.10 也带来了很重要的变更:iOS 默认使用开始使用 Impeller

在 3.7 版本中 Impeller 就被引入用于未来替换 Skia ,原因是 Flutter 团队面对 Skia 上越来越多的问题无法有效快速推进,所以走上了自研 Impeller 的道路,而效果也显著:

3.10 里更新的大多数篇幅都集中在 iOS 上,可以看到 iOS 上的性能问题一直都在困扰 Flutter 团队,而 Impeller 就是解决的途径。

那么你问我升级到 3.10 是否可以默认就使用 Impeller? 我的答案是否定的。对于生产项目,升级到 3.10 第一件事就是把 plist 里的 FLTEnableImpeller 设置为 false ,因为按照历史规律,能相对更稳定的 Impeller 大概就从 3.10.6 开始。

更建议下个版本才投入 Impeller 到生产,个人项目可以开始提前 beta。

当然逐步介入 Impeller 是必须使用的,因为下个版本很大概率 iOS 上的 Skia 就会开始被剔除。

还有一个比较实用的就是支持 Xcode 无线调试了。

另外本次更新的还有大量的 Material 3 控件,有新增的例如 NavigationBarNavigationDrawerSearchBar 等,也有 DatePickerTimePickerBottomSheet 的修改,但是我相信国内开发者大多都不是很关心 M3

目前需要在 MaterialApp 主题配置下通过 useMaterial3 才可以启用 M3,但是下个版本会变成默认,所以推荐这个版本开始先写 useMaterial3:false ,反正我知道的国内设计师都不大认可 M3。

本次还提供了一个骚气的 API ColorScheme.fromImageProvider ,从图片生成对应的 ColorScheme,我只想大家会用它来配置主题颜色并使用么?

Google I/O 2023 - 一文快速总结 Flutter & Dart 的现状和未来

对了,现在默认颜色变成紫色了。

Dart 3 开始预览支持的 WebAssembly native 代码是官方未来的主流方向,也就是 htmlcanvas 模式慢慢会是“非主流”

新的 Dart 编译为 Wasm 模块会在加载时间、性能和一致性上得到更好体验,同时针对浏览器团队合作,将新的 WasmGC 规范内置到生态中,从而实现真正的 native web 。

那么可以遇见,随着 Flutter 3.10 的发布,接下来的 Flutter 未来路线就更加明朗:

  • 更稳定的 iOS Impeller
  • Impeller 支持 Android
  • Skia 退出历史舞台
  • Web 在 Dart native Wasm 的支持下天平倾向 CanvasKit
  • 使用 Skia 的 PC 和 Web 与使用 Impeller 的 mobile 会出现更明显的渲染差异化。

Google I/O 2023 - 一文快速总结 Flutter & Dart 的现状和未来

Dart 3

可能你会说不是 null safety 很久了吗?但是现在 Dart 3 开始是强制性的 null safety ,也就是删除对 running without sound null safety 的支持

其实我见到很多同志依然还在使用非 null safety 的 Dart,是时候要升级了,跑不掉的。

Record, patterns 和 class modifiers 带来的生产力这里就不多说了,刚兴趣的可以去看上面的详细介绍,随着 Record, patterns 和 class modifiers 的加入,Dart 在现代语言的语法糖中终于逐步走上正轨,虽然还是「菜鸟」,但是它在慢慢站起来了

对于未来, Dart 还有两个主力的方向:

总体上 Dart 的定位也在从 Flutter 领域对外拓展,比如前面提到的 I/O 小游戏,它的后端也是使用 Dart 编写,目前 pub.dev 上的知名数据库,也都支持脱离 Flutter 单独使用。

最后

虽然本次 Flutter & Dart 并不是 Google I/O 的主角,但是可以感受到 Flutter 和 Dart 团队满满的诚意,Flutter 和 Dart 也在逐步实现 Flutter Forward 大会时的承诺,同时在逐步向用户展示他们未来的可能。

最后,可以明确一点:Flutter 3.10 和 Dart 3 还是有坑,但是这不会它们的终点,未来的 Flutter 和 Dart 会更加精彩