【文章翻譯】Announcing Dart 3.11

【文章內容使用 Gemini 2.5 Flash 自動翻譯產生】

好的,請注意,我將以繁體中文輸出 Markdown 格式的內容:

宣布 Dart 3.11

各位 Dart 開發人員您好!最新的穩定版 Dart 3.11 正式發布了!

此版本著重於響應能力和工具改進,您將在日常工作流程中感受到這些變化。從更智慧的分析伺服器到新的 pub 客戶端功能和增強的 AI 支援,Dart 3.11 旨在讓您保持流暢。繼續閱讀以了解更多資訊。

宣布 Dart 3.11

語言更新

此 Dart 版本中沒有新的語言更新。

工具更新

Dart MCP 和 AI 支援:套件 URI

我們將繼續改進 Dart 和 Flutter MCP 伺服器,以更好地支援 AI 編碼助手。

我們在 MCP 伺服器中新增了一個名為 read_package_uris 的工具。此工具允許 AI 代理(如 Cursor、Gemini 或 Copilot)從您的專案中讀取套件 URI 並將其添加到其上下文。這確保您的 AI 助手在產生程式碼時可以正確讀取、解析和利用相依性。

分析伺服器

此版本包含 Dart 分析伺服器的多項效能改進。伺服器現在使用「細粒度相依性」,使其在決定 IDE 會話期間需要重新分析哪些程式碼時更智慧。

我們還改進了特定情況下的分析效能,例如分析由符號連結導致的目錄結構中存在循環的程式碼,或許多常數物件的深層樹。

伺服器現在會快取編譯過的分析器插件入口點,從而縮短 IDE 會話以及 dart analyzeflutter analyze 命令的啟動時間。

最後,我們增強了許多分析伺服器功能中的「點式簡寫」支援,特別是程式碼補全、快速修復和快速協助。

Pub 更新

Pub 工作區中的 Glob 支援

Pub 工作區 現在支援使用 glob 宣告套件。這使您可以輕鬆地將目錄中的所有套件包含在 pub 工作區中,而無需一一列舉:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Before
name: workspace
environment:
sdk: ^3.10.0
workspace:
- pkg/a
- pkg/b
- pkg/c
# After
name: workspace
environment:
sdk: ^3.11.0
workspace:
- pkg/* # Adds all packages inside pkg.

注意:要使用此功能,您的 pubspec.yaml 必須具有 Dart 版本 3.11 或更高版本。

Pub 快取垃圾回收

Pub 始終將套件儲存在一個單一的全局 PUB_CACHE 中,確保您永遠不會下載相同的套件兩次。然而,由於 Pub 沒有追蹤哪些專案使用了快取,因此無法知道哪些套件已過時,導致套件版本隨著時間的推移而累積。到目前為止,唯一的解決方案是清除整個快取並重新開始。

從 Dart 3.9 開始,pub get 已將解析的專案路徑儲存在快取中。現在在 Dart 3.11 中,我們引入了 pub cache gc 命令,該命令遍歷所有「活動」專案,標記它們所依賴的所有套件版本,並刪除其餘的。這可以幫助您回收寶貴的磁碟空間。

1
2
3
4
5
6
7
8
9
10
> dart pub cache gc
Found 3 active projects:
* /home/yourusername/projects/pub
* /home/yourusername/projects/pub-dev
* /home/yourusername/projects/pana
All other projects will need to run `dart pub get` again to work correctly.
Will recover 2 GB.
Are you sure you want to continue? (y/N)? y
Deleting unused cache entries... (4.5s)
>

總結

Dart 3.11 就這樣!此版本完全著重於在日常開發中產生影響的細節。

有關完整的變更列表,請查看 Dart SDK 變更日誌。一如既往,我們很樂意聽取您的回饋!


宣布 Dart 3.11 最初發佈在 Dart 上的 Medium,人們在那裡透過突出顯示和回應這個故事來繼續討論。