作者 / 郭樹煜,谷歌開發者專家 (Flutter & Dart GDE),《Flutter 開發實戰詳解》作者,掘金優秀作者(戀貓de小郭),Github GSY 系列開源項目負責人
原文發布于掘金
隨著 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 發布https://juejin.cn/post/7231565908631633979
- Dart 3 正式版發布https://juejin.cn/post/7231704360668839994
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 控件,有新增的例如 NavigationBar、NavigationDrawer和 SearchBar等,也有 DatePicke、TimePicker和 BottomSheet的修改,但是我相信國內開發者大多都不是很關心 M3。
目前需要在 MaterialApp主題配置下通過 useMaterial3才可以啟用 M3,但是下個版本會變成默認,所以推薦這個版本開始先寫 useMaterial3:false,反正我知道的國內設計師都不大認可 M3。
本次還提供了一個騷氣的 API ColorScheme.fromImageProvider,從圖片生成對應的 ColorScheme,我只想問大家會用它來配置主題顏色并使用么?

對了,現在默認顏色變成紫色了。
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 版本的爐石傳說。
- I/O FLIPhttps://juejin.cn/post/7231378331139997757
結合之前 2023 Flutter Forward 大會上演示的真 3D 游戲 Demo,可以看到未來 Flutter 在游戲領域還會持續發力,期待明年 I/O 有更好的游戲答卷。
- 2023 Flutter Forwardhttps://juejin.cn/post/7192646390948823098#heading-6
Dart 3
Dart 3 的到來其實是可以預見的,因為自從 Flutter Forword 發布了 Dart 3α 預覽 之后,大家就對 Dart 3 有了一定的概念,其中最最最重要的就是,現在強制 null safety 了。
- Dart 3α 預覽https://juejin.cn/post/7194741144482218045
可能你會說不是 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 團隊正在采取一種更有效和徹底的方法進行探索,雖然沒有具體的時間,但是還是可以有所期待。
- Kotlin interophttps://dart.dev/guides/libraries/java-interop
- Objective-C 和 Swift interophttps://juejin.cn/post/7137874832988831751
總體上 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 會更加精彩。

谷歌開發者

在微信和微博平臺搜索 "谷歌開發者"
關注官方賬號

原文標題:在 I/O 看未來 | 社區投稿 - 一文快速總結 Flutter & Dart 的現狀和未來
文章出處:【微信公眾號:谷歌開發者】歡迎添加關注!文章轉載請注明出處。
-
谷歌
+關注
關注
27文章
6222瀏覽量
107428
原文標題:在 I/O 看未來 | 社區投稿 - 一文快速總結 Flutter & Dart 的現狀和未來
文章出處:【微信號:Google_Developers,微信公眾號:谷歌開發者】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
工業電機行業現狀及未來發展趨勢分析
鴻蒙Flutter實戰:14-現有Flutter 項目支持鴻蒙 II
北美運營商AT&T認證中的VoLTE測試項

鴻蒙Flutter實戰:12-使用模擬器開發調試
鴻蒙Flutter實戰:11-使用 Flutter SDK 3.22.0
鴻蒙Flutter實戰:10-常見問題集合
鴻蒙Flutter實戰:09-現有Flutter項目支持鴻蒙
鴻蒙Flutter實戰:08-如何調試代碼
鴻蒙Flutter實戰:06-使用ArkTs開發Flutter鴻蒙插件
鴻蒙Flutter實戰:03-鴻蒙Flutter開發中集成Webview
onsemi LV/MV MOSFET 產品介紹 &amp;amp; 行業應用

FS201資料(pcb &amp; DEMO &amp; 原理圖)
解讀北美運營商,AT&amp;amp;T的認證分類與認證內容分享

評論