跟着 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 发布: /post/723156…

Dart 3 正式版发布: /post/723170…

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 的现状和未来

对了,现在默许色彩变成紫色了。

Web 的首要更改便是支撑 fragment shader 和不必 iframe 能够把 flutter web 嵌套到其他 Web 下,现在 Flutter Web 的未来仍是在于 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 会呈现更明显的渲染差异化。

最终,不得不说 Flutter 在游戏支撑这条路上也越走越远,而和去年相同,今年相同发布了预热小游戏 I/O FLIP , 该款小游戏是运用 AI 规划的纸牌游戏,作为第二款 I/O 游戏,构建仍然采用了 Flutter 和 Firebase 开发构建,全体体会上像是 Demo 版别的炉石传说。

结合之前 2023 Flutter Forward 大会上演示的真 3D 游戏 Demo ,能够看到未来 Flutter 在游戏范畴还会继续发力,期待明年 I/O 有更好的游戏答卷。

Dart 3

Dart 3 的到来其实是能够遇见的,由于自从 Flutter Forword 发布了 Dart 3 预览 之后,我们就对 Dart 3 有了一定的概念,其中最最最重要的便是,现在强制 null safety 了。

可能你会说不是 null safety 好久了吗?可是现在 Dart 3 开端是强制性的 null safety ,也便是删去对 running without sound null safety 的支撑

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

Record, patterns 和 class modifiers 带来的生产力这里就不多说了,刚爱好的能够去看上面的详细介绍,跟着 Record, patterns 和 class modifiers 的参加,Dart 在现代言语的语法糖中总算逐渐走上正轨,尽管仍是「菜鸟」,可是它在渐渐站起来了

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

  • native interop :现在 Dart 经过 dart:ffi 已经能够直接和原生言语进行交互,比方 Java 和 Kotlin interop 以及 Objective-C 和 Swift interop 等,那么未来是不是能够不再需要写 Plugin ,直接经过 native interop 来完成?现在 Dart 上的大部分数据库完成都已经是 ffi 的接入支撑。
  • 元编程支撑:例如在 json 序列化支撑上一向是 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 会愈加精彩