健全的空安全 (sound null safety) https://medium.com/dartlang/announcing-dart-2-12-499a6e689c87 流程分析 https://dart.cn/null-safety/understanding-null-safety#flow-analysis
int definitelyInt(int? aNullableInt) {
if (aNullableInt == null) {
return 0;
}
// If flow analysis reaches this point,
// aNullableInt can safely promote to a non-null int.
return aNullableInt;
}
class Container {
final int? _fillLevel;
Container(this._fillLevel);
check() {
if (_fillLevel != null) {
int i = _fillLevel; // Prior to Dart 3.2, causes an error.
}
}
}
3.2 及以上版本 https://dart.cn/guides/language/evolution#language-versioning
package:lints https://pub.flutter-io.cn/packages/lints package:flutter_lints https://pub.flutter-io.cn/packages/flutter_lints
更新日志 https://github.com/dart-lang/lints/blob/main/CHANGELOG.md#300 立即升級 https://github.com/dart-lang/lints#upgrading-to-the-latest-lints
廣泛的跨平臺支持 https://dart.cn/overview#platform 與原生 C API 進(jìn)行互操作 https://dart.cn/guides/libraries/c-interop Java、Kotlin https://dart.cn/guides/libraries/java-interop Objective C 和 Swift https://dart.cn/guides/libraries/objective-c-interop
從 Dart 3.2 開始,我們對原生互操作進(jìn)行了許多改進(jìn):
我們?yōu)?C FFI 引入了 NativeCallable.isolateLocal 構(gòu)造函數(shù),它可以根據(jù)任意 Dart 函數(shù)創(chuàng)建 C 函數(shù)指針。這是一項(xiàng)由 Pointer.fromFunction 提供的擴(kuò)展功能,只能根據(jù)頂級函數(shù)創(chuàng)建函數(shù)指針。
NativeCallable.isolateLocal https://api.dart.cn/stable/dart-ffi/NativeCallable/NativeCallable.isolateLocal.html Pointer.fromFunction https://api.dart.cn/stable/dart-ffi/Pointer/fromFunction.html
我們更新了 Objective-C 綁定生成器,以使用在 Dart 3.1 中添加的 NativeCallable.listener。該生成器現(xiàn)在可以自動處理包含異步回調(diào)的 API,例如 Core Motion 這類此前需要手動編寫部分綁定代碼的 API。
NativeCallable.listener https://api.dart.cn/stable/dart-ffi/NativeCallable/NativeCallable.listener.html Core Motion https://developer.apple.com/documentation/coremotion
我們?yōu)閷?shí)現(xiàn) Java 和 Kotlin 互操作而持續(xù)改進(jìn) package:jnigen?,F(xiàn)在能夠?qū)?package:cronet_http (適用于 Android 的 Cronet HTTP 客戶端的封裝容器) 從手寫的綁定代碼遷移到自動生成的封裝容器。
package:jnigen https://dart.cn/guides/libraries/java-interop package:cronet_http https://pub.flutter-io.cn/packages/cronet_http 自動生成的封裝容器 https://github.com/dart-lang/http/blob/master/pkgs/cronet_http/jnigen.yaml
我們在 Native Assets 功能方面取得了重大進(jìn)展,該功能旨在解決與依賴原生代碼的 Dart package 分發(fā)相關(guān)的許多問題。Native Assets 提供統(tǒng)一的鉤子來集成構(gòu)建 Flutter 和獨(dú)立 Dart 應(yīng)用所涉及的各種構(gòu)建系統(tǒng),從而解決相關(guān)問題。您可以查看相關(guān)文檔獲取預(yù)覽。
Native Assets https://github.com/dart-lang/sdk/issues/50565 文檔 http://dart.cn/guides/libraries/c-interop#native-assets
DevTools https://dart.cn/tools/dart-devtools 推出 https://medium.com/p/c8bc1aaf8e5f/ 擴(kuò)展框架 https://pub.flutter-io.cn/packages/devtools_extensions Serverpod https://pub.flutter-io.cn/packages/serverpod 1.2 版本 https://github.com/orgs/serverpod/projects/4
WebAssembly https://webassembly.org/ Wasm 的垃圾回收支持 https://developer.chrome.com/blog/wasmgc/
CanvasKit Wasm 模塊 https://skia.org/docs/user/modules/canvaskit/
在采用 Wasm 的 Flutter Web 準(zhǔn)備結(jié)束目前的實(shí)驗(yàn)狀態(tài)之前,我們還有一些事情要做:
雙重編譯:生成 Wasm 和 JavaScript 輸出,并在運(yùn)行時啟用功能檢測,以支持具備或不具備 Wasm-GC 支持的瀏覽器。 現(xiàn)代 JavaScript 互操作性:一種新的基于擴(kuò)展類型的 JS 互操作機(jī)制,當(dāng)針對 JavaScript 和 Wasm 時,可以在 Dart 代碼、瀏覽器 API 和 JS 庫之間實(shí)現(xiàn)簡潔的、類型安全的調(diào)用。
擴(kuò)展類型 https://github.com/dart-lang/language/issues/2727
支持 Wasm 的瀏覽器 API:新的 package:web,基于現(xiàn)代 JS 互操作機(jī)制,取代了 dart:html (及相關(guān)庫),借此可輕松訪問瀏覽器 API,并且支持在 JS 和 Wasm 目標(biāo)上使用。
WebAssembly 支持 https://flutter.dev/wasm
dart.dev https://dart.cn/get-dart Flutter 3.16 https://medium.com/flutter/whats-new-in-flutter-3-16-dba6cb1015d1
原文標(biāo)題:Dart 3.2 更新盤點(diǎn)
文章出處:【微信公眾號:谷歌開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
谷歌
+關(guān)注
關(guān)注
27文章
6128瀏覽量
104948
原文標(biāo)題:Dart 3.2 更新盤點(diǎn)
文章出處:【微信號:Google_Developers,微信公眾號:谷歌開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論