歡迎光臨
每天分享高質量文章

Dart 2.3釋出,帶來構建UI新特性

來自:開源中國

連結: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.devpub.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。

已同步到看一看
贊(0)

分享創造快樂