用戶可以用谷歌 UI 框架 Flutter 基于一個代碼庫構(gòu)建出原生編譯的移動、Web 和桌面應(yīng)用程序。谷歌剛剛發(fā)布了Flutter 的 2022 年第 3 個版本,即版本3.3。隨之一起發(fā)布的還有Dart 2.18。這兩個版本都是改進版,沒有添加重大的新特性。新添加的渲染引擎 Impeller 只限于預(yù)覽并且只適用于 iOS。谷歌還推出了一個新的展示應(yīng)用 Wonderous,它用 Flutter 3.3 開發(fā),并使用了新渲染引擎 Impeller。
Flutter 3.3 的新特性
Flutter 應(yīng)用程序不使用底層平臺的 UI 元素,而是模擬它們。Flutter 自帶的 Material UI 適用于所有平臺,還提供了一個 iOS UI 元素集。其他開源庫則提供了 Windows、macOS 和 Linux 的 UI 元素集。
Flutter 網(wǎng)頁應(yīng)用程序中的文本選擇現(xiàn)在可以像預(yù)期的那樣——用戶可以一次選擇多行文本。觸控手勢在桌面應(yīng)用程序中的效果變得更好。Windows 應(yīng)用程序現(xiàn)在可以從 pubspec.yaml 構(gòu)建文件中獲取版本號。iPad 應(yīng)用程序可以使用蘋果手寫筆進行手寫輸入。
在這個版本中,一些 Material 3 組件得到了改進——IconButton, Chips 和 AppBar。使用新的 ui.ImmutableBuffer.fromAsset()方法加載包含在應(yīng)用程序中的圖像速度更快,使用的內(nèi)存更少?,F(xiàn)在在 iOS 上禁用了指針壓縮,將更多的內(nèi)存用于 Flutter 應(yīng)用程序的非 Dart 部分。
Flutter 團隊提供的 go_router 包通過基于 URL 的聲明簡化了應(yīng)用程序中的路由,4.3 版本支持異步代碼。Flutter Visual Studio Code 擴展和 Flutter DevTools 也得到了改進。
Flutter 3.3 不再運行在 32 位的 iOS 設(shè)備上,包括 iPhone 5C(2014 年推出)和更早的機型,以及第二代至第四代 iPad(2012 年推出)。即將到來的 2022 年第四季度發(fā)布的 Flutter 也不支持 macOS 10.11(2015 年推出)和 10.12(2016 年推出)。
蘋果在即將發(fā)布的秋季 iOS 和 iPadOS 版本中取消了 Bitcode,這也是為什么 Flutter 也會在未來的版本中移除對比 Bitcode 的支持。
Flutter 從一開始就使用 Skia 作為它的圖形引擎。Skia 支持 Chrome、Firefox、Android、ChromeOS 等。相比之下,Impeller 是為 Flutter 定制的,“充分利用了現(xiàn)代硬件加速圖形 API,如 iOS 上的 Metal 和 Android 上的 Vulkan?!边@樣就可以實現(xiàn)更好的動畫效果,并消除了一個常見的問題——動畫和轉(zhuǎn)場不連貫。
在發(fā)布之前的版本時,F(xiàn)lutter 團隊將 50 萬款現(xiàn)有的 Flutter 應(yīng)用程序作為取得成功的指標。這一次,F(xiàn)lutter 團隊表示,“每天都有超過 1000 款使用 Flutter 開發(fā)的新的移動應(yīng)用發(fā)布到蘋果和谷歌應(yīng)用商店”。但這兩個數(shù)字都缺乏背景支持,比如競爭平臺之間的表現(xiàn)如何。
Dart 2.18 的新特性
Dart 是強類型的編程語言,并針對 UI 開發(fā)進行了優(yōu)化。一開始它是“JavaScript 和 Java 的混合體”,現(xiàn)在它擁有這兩種語言都沒有的特性(比如全面空安全)。
Dart 于 2021 年 3 月推出了全面空安全性(Sound Null Safety),涵蓋了應(yīng)用程序和庫。這一特性與 Swift 相同,但與 Kotlin 不同,Kotlin 不能保證庫的空安全。排名前 250 的 Flutter 和 Dart 庫都遷移到了空安全,而排名前 1000 的庫只有 2%沒有遷移。在 2022 年 7 月運行的所有 Flutter 應(yīng)用程序中,超過 80%都使用了全面空安全。所以 Dart 計劃在 2023 年中停止支持沒有空安全的 Dart 版本。
Dart 包含了一個多平臺 HTTP 庫,它為兩個特定于平臺的庫提供了實驗性支持。一個是針對 iOS 和 macOS 的 cupertino_http,它使用蘋果的 NSURLSession 來實現(xiàn) WiFi 專屬網(wǎng)絡(luò)或 VPN 接入等功能。第二個是用于 Android 的 cronet_http,它建立在流行的 Cronet 庫之上。
用于調(diào)用本地 C API 的 Dart 外部函數(shù)接口(FFI)現(xiàn)在可以在 iOS 和 macOS 上與 Objective-C 和 Swift 代碼交互。改進的類型推斷可以更好地檢測一些非空參數(shù)的情況。異步代碼的體積更小,運行得更快。
原文鏈接:
Flutter 3.3 Previews New Rendering Engine
相關(guān)閱讀: