【文章內容使用 Gemini 2.5 Flash 自動翻譯產生】
大家好,Dart 開發者們!最新的穩定版本 Dart 3.9 正式發布了!
此版本旨在讓您的工作更輕鬆,您的應用程式更高效。透過對 null 安全的關鍵更新、Dart CLI 的效能提升,以及令人興奮的 Dart 和 Flutter MCP 伺服器的加入,以增強您的 AI 助手,有很多值得喜愛的地方。請繼續閱讀,探索 Dart 3.9 中的所有新功能。

語言更新
Null 安全
Dart 3.9 在計算類型提升、可達性和明確賦值時假設 null 安全。要利用這些改進,請將您的套件的 SDK 限制下限設定為 3.9 或更高(sdk: ^3.9.0)。由於此更改,可能會產生更多 dead_code
警告。
健全性更新
我們修復了一個健全性問題,該問題允許直接調用從 getter 返回的值,而無需任何運行時檢查,當 getter 的返回類型是泛型類型參數實例化為 dynamic
或 Function
時。此健全性問題出現在 dev-compiler DDC
中,沒有其他工具受到影響。
在修復之前,以下 getter 可能會觸發直接調用問題。例如:
1 | // The following getter used to trigger an issue with a direct |
工具更新
Dart 和 Flutter MCP 伺服器
Dart 和 Flutter MCP 伺服器 充當橋樑,讓 AI 編碼助手(例如 Gemini CLI、Cursor 和 GitHub Copilot)能夠存取更多 Dart 專案的上下文。您的 AI 助手現在不僅可以建議程式碼,還可以深入理解您的專案並代表您採取行動。
透過 Dart 和 Flutter MCP 伺服器,您可以要求 AI 助手執行以下操作:
Dart 和 Flutter MCP 伺服器現已在 Dart SDK 的穩定頻道上可用。

更快的 Dart CLI
以前,當您運行某些 Dart CLI 命令(如 dart analyze
和 dart fix
)時,您的電腦必須在運行之前編譯 分析伺服器 的程式碼。現在,這些工具使用分析伺服器的預先編譯 (AOT) 快照,這表示伺服器已經預先編譯成快速的原生機器碼。
結果因原始碼而異,但我們在一個範例套件上運行了一些常用命令,並獲得了一些有趣的結果。像 dart format
這樣的一些短命令現在只需一小部分時間即可完成,而像 dart analyze
這樣運行時間較長的命令則快了近 50%。

pub 用戶端更新
Git 依賴項 現在可以根據 Git 標籤進行版本解析。
當您在描述符中使用 tag_pattern
並且存在版本約束時,所有符合模式的提交都會在解析期間被考慮。在以下範例中,只考慮 my_dependency
的版本 2.0.1 及更高版本:
1 | dependencies: |
從語言版本 3.9 開始,根套件中的 flutter
限制上限現在受到尊重(dart
限制已經受到尊重)。設定嚴格的 dart
或 flutter
限制對於確保開發團隊在共同開發應用程式時都使用相同的 SDK 版本非常有用(詳情請參閱 問題 #95472)。
例如,在像這樣的一個根 pubspec 中,如果使用不是 3.33.0 版本的 Flutter SDK 調用 pub get
,則會失敗:
1 | name: my_app |
Dart 原生編譯器
我們新增了對當目標作業系統為 Linux 時,針對 ARM(ARM32)和 RISCV64(RV64GC)目標架構的交叉編譯支援。
棄用和重大變更
32 位元 x86 架構
Dart 已棄用 32 位元 x86 架構。對於大多數開發人員來說,這不會產生影響,因為它主要影響較舊的基於 x86 的 Android 模擬器和少數實體設備。32 位元 ARM 和 64 位元 x86_64 模擬器和設備仍然支援。完整的技術分解可在 Dart GitHub 棄用議題 中找到。
dart build
dart build
在 beta 頻道上預覽。
dart build -f exe <target>
現在是 dart build cli --target=<target>
。有關更多資訊,請參閱 dart build cli --help
。
總結
Dart 3.9 的介紹就到這裡!我們希望您和我們一樣對這些更新感到興奮。我們總是感謝您的回饋,因此請隨時分享您的想法。下次再見,編碼愉快!
宣布 Dart 3.9 最初發佈於 Dart 的 Medium,人們在那裡透過強調和回應這個故事來繼續對話。