Flutter 2 正式出道(一)

JarvanMo發表於2021-03-04

相信不少人昨晚熬夜奮戰,觀看了Flutter Engage大會,Flutter團隊也正式官宣了Flutter 2。從Flutter 1.0正式版到Flutter 2差不多有兩年多一些的時間。但在這麼短的時間裡,Flutter團隊在765個貢獻者的貢獻下共關閉了24541個issue,合併了17039個PR。從9月份的Flutter 1.22開始,團隊在298個貢獻者的貢獻下共關閉了5807個issue,合併了4091個PR。

Flutter 2為我們帶了很多令大家興奮的特性,比如Dart 2.12, 空安全,Web等等。有條件的可以看看這兩個文章Announcing Flutter 2Announcing Dart 2.12.

接下來,我們快速瀏覽一下Flutter 2讓我們興奮的事情吧~

Web

現在,Flutter Web正式出道,完成從betastable的華麗轉身。在Flutter 2中,由於Flutter Web的出道,Flutter將程式碼重用能力提升到了另一個層次。所以,現在當你使用Flutter 2建立新專案的時候,web將成為新的支援平臺。 圖片

通過利用Web平臺的眾多優勢,Flutter為構建豐富的互動式Web應用程式奠定了基礎。 Flutter團隊主要專注於效能和渲染保真度的改進。 除了HTML渲染器之外,Flutter 2還新增了一個新的基於CanvasKit的渲染器。Flutter 2也新增了一些web專用特性,比如Link widget,以此來確保當你的應用執行在瀏覽器的時候感覺像是一個web應用。

想要了解更多Flutter web可以閱讀Flutter web support hits the stable milestone

空安全(Sound Null Safety)

安全是Dart語言的重要補充,它通過區分可空型別和非可空型別進一步增強了型別系統。這使開發人員能夠防止null錯誤崩潰(NPE),這是應用程式崩潰的常見原因。 通過將空檢查合併到型別系統中,可以在開發過程中捕獲這些錯誤,從而防止生產崩潰。 從基於Dart 2.12Flutter 2開始,Flutter已開始完全支援空空全了。 有關更多詳細資訊,請參見Announcing Dart 2.12

pub.dev上已經有超過1000支援空安全的開發包了,所以大家可以開始嘗試升級到Flutter 2了。如果你是開發包的作者,可以參見遷移指導並開始為你的開發包提供對空安全的支援。

桌面

在此版本中,Flutter Desktop已在beta可用了,並且Flutter Desktop也被標記了早期釋出的標誌。 這意味著Flutter已經準備好讓你嘗試一下用FLutter開發一下桌面應用:你可以把Flutter Desktop視為“ beta快照”,以此來預覽將於今年晚些時候釋出的最終穩定版本。

關於更多桌面的改進和特性,稍後我會再補充。

新的iOS特性

儘管Flutter團隊一直致力於提高對其他平臺支援質量,但請不要就這樣以為他們把iOS拋至腦後了。事實上,此版本合併了178個與iOS有關的PR,包括為iOS帶來State Restoration2349567781,這可以讓我們從命令列直接構建IPA,並不需要開啟Xcode。69809,它更新了CocoaPods版本以匹配最新的工具。 此外,Cupertino實現中還新增了一些iOS小部件。

全新的iOS搜尋框CupertinoSearchTextField

CupertinoFormSection, CupertinoFormRowCupertinoTextFormFieldRow ,這幾個新的小部件可以更輕鬆地生成更具有iOS美感的表單。

除了致力於為iOS帶來新特性,Flutter團隊也在研究如何提升著色器和動畫在iOS和Flutter上的效能。iOS仍是Flutter的主要平臺,Flutter團隊將會繼續努力為大家帶來新的特性和效能提升。

新的小部件:Autocomplete 和 ScaffoldMessenger

AutocompleteCore是支援auto-complete(自動填充)的最小單位了。

Autocomplete就是自動填充了,這個功能很實用。

現在你可以直接使用Autocomplete了,如果你對該特性的設計感興趣,你可以讀一下[Autocomplete設計文件]

(docs.google.com/document/d/…)

同樣地,ScaffoldMessenger的建立是為了解決一些和SnackBar有關的問題,包括輕鬆響應AppBar動作建立SnackBar,建立在Scaffold轉換之間持久儲存的SnackBars的能力,以及即使使用者導航到具有其他Scaffold的頁面也能夠在非同步操作完成時顯示SnackBars的功能 。

所有的這些好處,我們只需要幾行程式碼就能實現顯示SnackBar

final messenger = ScaffoldMessenger.of(context);
messenger.showSnackBar(SnackBar(content: Text(‘I can fly.’)));
複製程式碼

當然了ScaffoldMessenger不止這些,有關更多的詳細資料,可以觀看這個視訊

東西太多了,寫不完。晚上再更。

相關文章