Dart 2.14語言和Flutter 2.5框架可用

Google 發布了 Dart 2.14 程式語言,該語言繼續開發徹底重新設計的 Dart 2 分支,它與 Dart 語言原始版本的不同之處在於使用強靜態類型(類型可以自動推斷,因此指定類型不是必需的,但不再使用動態類型,並且最初計算類型時將其分配給變量,隨後應用嚴格的類型檢查)。

Dart語言的特點:

  • 熟悉且易於學習的語法,對於 JavaScript、C 和 Java 程式設計師來說很自然。
  • 確保所有現代 Web 瀏覽器和各種類型的環境(從可攜式裝置到功能強大的伺服器)的快速啟動和高效能。
  • 能夠定義允許封裝和重複使用現有方法和資料的類別和介面。
  • 指定類型可以更輕鬆地偵錯和識別錯誤,使程式碼更清晰、更具可讀性,並簡化第三方開發人員的修改和分析。
  • 支援的類型包括:各種類型的雜湊、陣列和清單、佇列、數字和字串類型、用於確定日期和時間的類型、正規表示式(RegExp)。 可以建立您自己的類型。
  • 為了組織並行執行,建議使用具有isolate屬性的類,其程式碼完全在單獨的記憶體區域的隔離空間中執行,透過發送訊息與主進程互動。
  • 支援使用可簡化大型 Web 專案的支援和偵錯的程式庫。 函數的第三方實作可以以共享庫的形式包含在內。 應用程式可以分為多個部分,並將每個部分的開發委託給單獨的程式設計師團隊。
  • 一組支援 Dart 語言開發的現成工具,包括動態開發和偵錯工具的實現,以及動態程式碼修正(「編輯並繼續」)。
  • 為了簡化 Dart 語言的開發,它附帶了 SDK、一個套件管理器 pub、一個靜態程式碼分析器 dart_analyzer、一組函式庫、一個整合開發環境 DartPad 以及支援 Dart 的 IntelliJ IDEA、WebStorm、Emacs、Sublime Text 插件2和維姆。
  • 其他帶有庫和實用程式的軟體包透過 pub 儲存庫分發,該儲存庫擁有超過 20 個軟體包。

Dart 2.14 版本的主要變更:

  • 新增了新的三重移位運算子 (>>>),與「>>」運算子不同,它執行的不是算術運算,而是邏輯移位,無需考慮符號位元(執行移位時不會分為正數和負數)。
  • 刪除了對類型參數的限制,該限制阻止泛型函數類型用作類型參數。 例如,現在您可以指定:late List (T)>id 函數; var 回呼 = [ (T值) => 值]; 後期 S 函數(T)>(S) f;
  • 允許使用註釋中的類型指定參數,例如@Deprecated。 例如,您現在可以指定:@TypeHelper (42、《意義》)
  • 靜態方法 hash、hashAll 和 hashAllUnordered 已新增至 Object 類別的標準庫(核心)。 DateTime 類別改善了在不能被一小時整除的夏令時和冬令時之間轉換時鐘時對本地時間的處理(例如,在澳洲使用 30 分鐘的偏移量)。 ffi 套件添加了對 arena 記憶體分配機制的支持,該機制會自動釋放資源。 ffigen 套件增加了從 C 語言產生 Dart 類型的 typedef 定義的功能。
  • pub.dev 儲存庫中250 個最受歡迎的軟體包和前94 個軟體包中的1000% 已切換為使用「空安全」模式,這將避免因嘗試使用值而未定義並設定為「空」的變數而導致崩潰” “ 此模式意味著變數不能有 null 值,除非明確地為它們分配了 null 值。 此模式嚴格遵守變數類型,這允許編譯器應用額外的最佳化。 在編譯時檢查類型合規性,例如,如果嘗試將值“Null”指派給類型不暗示未定義狀態的變數(例如“int”),則會顯示錯誤。
  • 提出了程式碼分析器(linter)的統一規則集,為檢查是否符合 Dart 和 Flutter 框架的程式碼風格指南提供了同步支援。 由於歷史原因,Flutter 和 Dart 的編碼規則是不同的,此外,Dart 使用了兩套規則——來自 Google 的迂腐規則和來自 Dart 開發者社群的規則。 Dart 2.14 引入了一套新的 linter 通用規則,決定在新的 Dart 專案和 Flutter SDK 中預設使用該規則。 該集包括核心規則(lints/core.yaml 套件)、建議的附加規則(lints/recommished.yaml)和 Flutter 特定的建議(flutter_lints/flutter.yaml)。 建議使用迂腐規則的使用者根據 Dart 文件的建議改用新的編碼風格。
  • 在格式化程式中,級聯程式碼區塊的格式化進行了最佳化,可以顯著提高格式化效能,並避免對表達式元素所有權的模糊解釋。 例如,在表達式“var result = errorState ?”中呼叫“..doIt” foo : bad..doIt()」 不關心「bad」區塊的條件部分,而是整個表達式,因此在格式化時現在將其分開: var result = errorState ? foo : 壞..doIt();
  • SDK 中新增了對 Apple M1 (Silicon) 處理器的支持,這意味著能夠在具有 Apple Silicon 處理器的系統上運行 Dart VM、實用程式和 SDK 元件,並支援為這些晶片編譯可執行檔。
  • 「dart pub」指令新增了對新服務檔案「.pubignore」的支持,該檔案允許您定義將套件發佈到 pub.dev 儲存庫時將跳過的檔案清單。 這些設定不會幹擾「.gitignore」忽略清單(在某些情況下,pub.dev 可能希望避免傳輸 Git 中所需的文件,例如開發期間使用的內部腳本)。
  • 已經完成了提高「dart test」命令效能的工作,如果版本號未更改,該命令現在不需要在更改 pubspec 後重新編譯測試。
  • 已停止支援 ECMAScript 5 相容模式下的編譯(此變更將導致失去與 IE11 瀏覽器的相容性)。
  • 各個實用程式 stagehand、dartfmt 和 dart2native 已被宣布過時,取而代之的是透過 dart 實用程式呼叫的內建命令。
  • VM 本機擴充機制已被棄用。 若要從 Dart 程式碼呼叫本機程式碼,建議使用新的 Dart FFI(外部函數介面)。

同時,發布了使用者介面框架 Flutter 2.5 的重要版本,該框架被認為是 React Native 的替代方案,允許基於一個程式碼庫發布適用於 iOS、Android、Windows、macOS 和 Linux 的應用程式平台,以及創建在瀏覽器中運行的應用程式。 Google 開發的 Fuchsia 微核心作業系統的客製化 shell 是在 Flutter 的基礎上建構的。

Flutter程式碼的主要部分是用Dart語言實作的,執行應用程式的執行時間引擎是用C++寫的。 開發應用程式時,除了使用Flutter原生的Dart語言之外,還可以使用DartForeignFunction介面來呼叫C/C++程式碼。 透過將應用程式編譯為目標平台的本機程式碼,可以實現高執行效能。 在這種情況下,程式不需要在每次變更後重新編譯 - Dart 提供了熱重載模式,讓您可以對正在執行的應用程式進行變更並立即評估結果。

Flutter 2.5 的主要變更:

  • 進行了重大的效能優化。 在 iOS 和 macOS 平台上,已經實作了 Metal 圖形 API 著色器的預編譯。 提高了處理非同步事件的效率。 解決了垃圾收集器從未使用的圖像中回收記憶體時的延遲問題(例如,在播放20 秒的動畫GIF 期間,垃圾收集操作的數量從400 次減少到4 次)。在Dart 和Objective 之間傳遞訊息時的延遲 - C/Swift 減少到 50% (iOS) 或 Java/Kotlin (Android) 為基於 Apple Silicon 晶片的系統添加了本機構建支援。
    Dart 2.14語言和Flutter 2.5框架可用
  • 對於Android平台,已經建立了對以全螢幕模式運行應用程式的支援。 作為下一代材料設計選項的“Material You”設計理念的實施仍在繼續。 新增了新的狀態MaterialState.scrolledUnder,實現了調整大小時捲軸的動態顯示,並提出了用於顯示通知橫幅的新介面。
  • 相機插件的功能得到了顯著擴展,增加了用於控制自動對焦、曝光、閃光、變焦、降噪和解析度的工具。
  • 開發人員工具 (DevTools) 已改進,包括更新的小部件檢查模式,以及用於識別渲染延遲和追蹤著色器編譯的工具。
    Dart 2.14語言和Flutter 2.5框架可用
  • 改進了 Visual Studio Code 和 IntelliJ/Android Studio 的插件。

來源: opennet.ru

添加評論