相信不少人昨晚熬夜奮戰,觀看了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 2和Announcing Dart 2.12.
接下來,我們快速瀏覽一下Flutter 2
讓我們興奮的事情吧~
Web
現在,Flutter Web
正式出道,完成從beta
到stable
的華麗轉身。在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.12
的Flutter 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 Restoration
的23495。67781,這可以讓我們從命令列直接構建IPA,並不需要開啟Xcode。69809,它更新了CocoaPods版本以匹配最新的工具。 此外,Cupertino
實現中還新增了一些iOS小部件。
全新的iOS搜尋框CupertinoSearchTextField
CupertinoFormSection, CupertinoFormRow和CupertinoTextFormFieldRow ,這幾個新的小部件可以更輕鬆地生成更具有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
不止這些,有關更多的詳細資料,可以觀看這個視訊。
東西太多了,寫不完。晚上再更。