來自:開源中國
連結:https://www.oschina.net/news/106546/dart-2-3-released
Google I/O 2019 第二天,官方釋出了 Dart 2.3 穩定版本。https://medium.com/dartlang/announcing-dart-2-3-optimized-for-building-user-interfaces-e84919ca1dff
此版本針對構建使用者介面進行了最佳化,改善了開發者在開發 UI 時的編碼體驗,為開發 Flutter UI 提供了新的工具支援,同時還提供了兩個新的網站:dart.dev 與 pub.dev。
用於構建使用者介面的新語言特性
在客戶端開發方面,Dart 與 Flutter 團隊之間長期合作的專案之一就是使用 Dart 捕獲使用者介面程式碼,而不需要標記語言。開發團隊認為對行為和佈局使用單一語言具有很大的好處,包括減少背景關係切換、不必學習兩種語言,併在構建 UI 時允許通用程式語言的所有抽象功能。
在 Dart 最近幾個版本中進行了一些改進,例如簡化構建 widget 的程式碼,新增自動的 int-to-double 轉換以及新增 set literals。Dart 2.3 中,進一步帶來了三個用於描述 UI 的新特性:基於串列、條件與重覆。
可以將 UI 視為 widget 節點的樹,一些節點包含 widget 串列,例如可滾動元素的串列。通常這些串列是從其它串列構建的。為此,添加了一個新的 spread operator 擴充套件運運算元特性,用於將元素從一個串列解壓到另一個串列。在下麵的示例中,buildMainElements() 傳回一個 widget 串列,然後使用擴充套件運運算元 … 將其解壓到周圍串列中:
Widget build(BuildContext context) {
return Column(children: [
Header(),
...buildMainElements(),
Footer(),
]);
}
另一個常見的 UI 任務是根據條件包含特定元素。例如,開發者可能希望在所有頁面上都帶有“下一步”按鈕,當然條件是最後一頁不需要這個按鈕。在 Dart 2.3 中,可以使用以下 collection if 執行此操作:
Widget build(BuildContext context) {
return Column(children: [
Text(mainText),
if (page != pages.last)
FlatButton(child: Text('Next')),
]);
}
最後,UI 經常從其它重覆元素構建重覆元素,可以使用新的 collection for 特性來描述這一點:
Widget build(BuildContext context) {
return Column(children: [
Text(mainText),
for (var section in sections)
HeadingAction(section.heading),
]);
}
這三個新特性是語言特性,而不是標記命令,因此它們是完全可組合的,可以在處理集合的任何背景關係中使用。這些特性包含在 Flutter 1.5 版本中,可在 Dart 2.3 版本中找到。
此外還添加了新的 lint,可以在靜態分析中配置這些 lint 以強制使用新的 spread、collection if 和 features for 特性。
IDE 和編輯器功能
配合 Dart 2.3 的 UI 特性改進,此版本還為 IDE 支援添加了新的 UI Guides 功能。UI Guides 是在 UI 程式碼中繪製的水平和垂直線,使得更容易看到 Flutter UI build() 方法的樹結構。以下是一個計算器應用示例,其中 UI Guides 清楚地表示了 UI 是從包含多個 KeyRows 的擴充套件列構建的,每個 KeyRows 包含 NumberKeys。
UI Guides 在 IntelliJ IDEA 35.2 和 Android Studio 外掛中提供。今後 VS Code 中也有望提供類似支援。
另一方面,開發者在使用 API 時經常會使用程式碼自動補全功能,這一功能在補全已匯入的庫中的 API 效果很好,但對於還未匯入的庫則不起作用。新版本 IDE 現在彌補了這一不足,開發者現成可以在任何字首上呼叫程式碼補全,並且將看到當前包中所有 API 的完整性,它直接依賴的包以及 SDK。如果補全的是尚未匯入的庫中的程式碼,則 IDE 會為自動新增匯入陳述句。
新的 Dart 與 Pub 網站
開發團隊為 Dart 平臺構建一個新網站:dart.dev,https://dart.dev。
該網站提供了一個全新的登陸頁面,專註於解釋 Dart 平臺的核心優勢,同時更新了檔案頁面,以獲得更好的導航和更具視覺吸引力。最後,對所有內容進行了大量重組,以使其更容易被髮現,併為以前缺少的核心內容添加了新頁面。此外,更新了 Pub 包網站,並使用了方便的新 URL:pub.dev。
朋友會在“發現-看一看”看到你“在看”的內容