主頁 > 後端開發 > 【老孟Flutter】Flutter 2的新功能

【老孟Flutter】Flutter 2的新功能

2021-03-08 06:14:32 後端開發

老孟導讀:昨天期待已久的 Flutter 2.0 終于發布了, Flutter Web和Null安全性趨于穩定,Flutter桌面安全性逐漸轉向Beta版!

原文鏈接:https://medium.com/flutter/whats-new-in-flutter-2-0-fe8e95ecc65

今天,我們很高興地宣布Flutter 2的發布,距離Flutter 1.0的發布已經兩年多了,但是在很短的時間內,我們已經關閉了24,541期,并合并了765個貢獻者的17,039個PR,自9月Flutter 1.22發布以來,我們已經關閉了5807期并合并了298位貢獻者的4091個PR,特別感謝我們的志愿者捐助者,他們慷慨地抽出時間來改進Flutter專案,Flutter 2 release 版本前幾名志愿者貢獻者是xubaolin46個PR,a14n32個PR,專注于使Flutter達到零安全,hamdikahloun具有20個PR,改善了Flutter插件的數量,但是,不僅僅是編碼員為Flutter專案做出了貢獻,一大批志愿者PR評審人員還負責評審1525個PR,包括hamdikahloun(再次!),CareF和YazeedAlKhalaf(16個!),Flutter確實是社區的一項作業,如果沒有問題提出者,PR貢獻者和代碼審查者,我們就不可能進入第2版,此版本適用于所有人,

Flutter 2發行版中發生了很多令人興奮的事情,有關Flutter 2和Dart 2.12的新功能以及我們的客戶和合作伙伴如何使用Flutter 2的概述,請參閱宣布Flutter 2,有關Dart 2.12的詳細資訊,請參閱宣布Dart 2.12,有關建議在生產中使用的Flutter網站的最佳利用方法,請參閱Flutter網站支持達到穩定的里程碑,

而且,要了解Flutter 2本身的新功能,請繼續閱讀!

Web

截止到今天,Flutter的Web支持已經從Beta過渡到穩定渠道,在此初始穩定版本中,Flutter在Web平臺的支持下將代碼的可重用性提高到另一個層次,因此,現在當您穩定地創建Flutter應用程式時,Web只是該應用程式的另一個設備目標,

通過利用Web平臺的眾多優勢,Flutter為構建豐富的互動式Web應用程式奠定了基礎,我們主要專注于性能和渲染保真度的改進,除了我們的HTML渲染器之外,我們還添加了一個新的基于CanvasKit的渲染器,我們還添加了特定于Web的功能,例如Link小部件,以確保在瀏覽器中運行的應用感覺像Web應用,

在Flutter的Web支持博客文章中找到有關此穩定版本的更多詳細資訊,

Sound Null Safety

空安全性是Dart語言的重要補充,它通過區分可空型別和非可空型別進一步增強了型別系統,這使開發人員能夠防止null錯誤崩潰,這是應用程式崩潰的常見原因,通過將空檢查合并到型別系統中,可以在開發程序中捕獲這些錯誤,從而防止生產崩潰,從Flutter 2開始,包含Dart 2.12的穩定版完全支持Null Safety,有關更多詳細資訊,請參見Dart 2.12博客文章,

pub.dev軟體包存盤庫已經發布了1,000多個空安全軟體包,其中包括Dart,Flutter,Firebase和Material團隊的數百個軟體包,如果您是軟體包作者,請查看遷移指南并考慮立即進行遷移,

Desktop

在此版本中,我們很高興地宣布,Flutter的桌面支持已在穩定頻道中以早期版本的標志提供,這意味著我們已經準備好讓您嘗試一下它作為Flutter應用程式的部署目標:您可以將其視為“ beta快照”,以預覽將于今年晚些時候發布的最終穩定版本,

為了使Flutter桌面達到這樣的質量,從大小上進行了改進,從確保文本編輯像在每個受支持的平臺上的本機體驗一樣開始,包括諸如文本選擇樞軸點的基本功能以及能夠進行文本編輯的能力,在處理完鍵盤事件后停止傳播,在滑鼠輸入端,現在可以立即開始使用高精度定點設備進行拖動,而不必等待處理觸摸輸入時所需的延遲,此外,內置的背景關系選單已添加到Material和Cupertino設計語言的TextField和TextFormField小部件中,最后,添加了抓手 到ReorderableListView小部件,

作為開發人員,ReorderableListView總是很擅長移動專案,但是它要求用戶長按才能啟動拖動,這在移動設備上很有意義,但是很少有臺式機用戶會想到用滑鼠長按某個專案來移動它,因此此版本包括適用于滑鼠或觸摸輸入的抓握手柄,平臺慣用功能的另一項改進是更新的滾動條,該滾動條可以正確顯示桌面形狀因素,

此版本包括一個更新的Scrollbar小部件,該小部件在桌面環境中非常有效

滾動條小部件已更新,以提供桌面上預期的互動功能,包括拖動拇指,單擊軌道以上下滾動頁面以及在滑鼠懸停在滑鼠的任何部分上時顯示軌道的功能,滾動條,此外,由于Scrollbar是使用新ScrollbarTheme類的主題,因此您可以設定其樣式以使其與應用程式的外觀和風格相匹配,

對于其他特定于桌面的功能,此版本還啟用了Flutter應用程式的命令列引數處理功能,以便可以使用諸如Windows File Explorer中的資料檔案雙擊之類的簡單操作來打開應用程式中的檔案,我們還努力使Windows和macOS的調整大小更加流暢,并為國際用戶啟用IME(輸入法編輯器),

圖片發布

Flutter桌面現在支持直觀的IME輸入

此外,我們還提供了更新的檔案,介紹了開始準備將桌面應用程式部署到特定于作業系統的商店時需要執行的操作,試試看,如果我們錯過了任何事情,請提供反饋,

在嘗試使用Flutter桌面Beta時,您可以通過按預期方式切換到Beta通道并根據flutter.dev上的指導為目標平臺設定配置標志來訪問它,此外,我們還制作了穩定通道上可用的beta位元的快照,如果您使用“ flutter config”啟用某個桌面配置設定(例如enable-macos-desktop),則可以嘗試桌面支持的beta功能,而不必經歷漫長的程序才能轉移到beta頻道,洗掉Flutter SDK的所有最新Beta版,構建工具等,這非常適合嘗試一下或將桌面支持用作簡單的“ Flutter Emulator”,

但是,如果您選擇停留在穩定的頻道上以訪問桌面Beta,則不會像切換到Beta或dev頻道那樣快地獲得新功能或錯誤修復,因此,如果您正在積極地針對Windows,macOS或Linux,我們建議您切換到可更快提供更新的渠道,

當我們接近Flutter桌面的第一個完整的生產質量版本時,我們知道我們還有更多作業要做,包括對與本機頂級選單集成的支持,更像各個平臺的體驗的文本編輯以及可訪問性支持,以及常規的錯誤修復和性能增強,如果您認為在臺式機達到生產質量之前還需要做其他事情,請確保提供您的反饋,

平臺自適應應用程式:Flutter Folio示例

現在,Flutter 支持生產應用三個平臺(Android,iOS設備和Web)和三個測驗版(在Windows,MacOS和Linux)的,一個自然的問題是:如何撰寫一個應用程式,適應本身以及多個不同尺寸(小,中和大螢屏),不同的輸入模式(觸摸,鍵盤和滑鼠)和不同的習慣用法(移動,網路和臺式機)?為了為我們自己以及世界各地的Flutter開發人員回答此問題,我們委托了Flutter Folio剪貼簿應用程式,

Folio只是一個簡單的示例,您希望它可以從一個代碼庫在多個平臺上很好地運行,所謂“好”,是指它在小螢屏,中螢屏和大螢屏上看起來都不錯,它利用了觸摸,鍵盤和滑鼠輸入的優勢,并且對于平臺的慣用語言也很好用(例如,通過使用網路上的鏈接和桌面上的選單),我們將這種應用稱為“平臺自適應”,因為它可以很好地適應所運行的任何平臺,

如果您想了解如何使自己的應用程式平臺具有適應性,可以查看Folio的源代碼,將來,期望找到能夠更深入地探討該主題的檔案和代碼實驗室,同時,請查看Alo?sDeniel關于該主題的出色博客文章和視頻,

Google Mobile Ads to Beta

除了Flutter桌面版移至測驗版,今天我們很高興地宣布Flutter的Google移動廣告SDK的公開測驗版,這是一個全新的插件,除了現有的重疊式廣告格式(重疊式橫幅廣告,非頁內廣告和獎勵視頻廣告)外,還提供內嵌橫幅廣告和原生廣告,該插件統一了對Ad Manager和Admob的支持,因此,無論您是什么規模的發布商,都可以根據自己的情況量身定制該插件,

我們一直在與一些早期客戶一起在私人Beta版程式中試用此插件,其中許多人已成功使用這些新格式啟動了他們的應用程式,例如,Sua Musica(最大的拉丁美洲音樂平臺,面向擁有1.5萬名經過驗證的歌手和1000萬MAU的獨立歌手),使用適用于Flutter的Google移動廣告SDK推出了其新的Flutter應用,他們發現印象數增加了350%,點擊率增加了43%,eCPM增加了13%,

該插件今天可供您使用,作為Flutter Engage的一部分,Andrew Brogdon和Zoey Fan做了一個關于“使用Flutter進行應用獲利”的會議(可在Flutter Engage網站上找到),他們在其中討論了使用Flutter構建的應用的獲利策略,以及如何在自己的廣告中加載廣告Flutter應用,此外,我們在flutter.dev上創建了一個新的Ads頁面,您可以在其中找到所有有用的資源,例如插件實施指南,內嵌橫幅和原生廣告代碼實驗室,以及重疊橫幅,非頁內廣告和獎勵視頻廣告代碼實驗室,請確保將其簽出!

新的iOS功能

僅僅因為我們正在繼續提高對其他平臺的支持質量,所以不要以為我們忘記了iOS,實際上,此版本帶來了與iOS相關的178個PR合并,包括23495(將狀態恢復帶到iOS),67781(它滿足了長期存在的直接從命令列構建IPA而無需打開Xcode的要求)的要求,以及69809,更新了CocoaPods版本以匹配最新工具,此外,Cupertino設計語言實作中還添加了一些iOS小部件,

新的CupertinoSearchTextField提供了iOS搜索欄UI,

圖片發布

該CupertinoFormSection,CupertinoFormRow和CupertinoTextFormFieldRow部件更容易產生與iOS的分段式視覺美學驗證表單欄位,

圖片發布

除了適用于iOS的功能外,在著色器和影片方面,我們還將繼續總體上研究iOS和Flutter的性能改進,iOS仍然是Flutter的主要平臺,我們將繼續努力帶來重要的新功能和性能改進,

新的小部件:自動完成和ScaffoldMessenger

此版本的Flutter附帶了兩個附加的新小部件,即AutocompleteCore和ScaffoldMessenger,AutocompleteCore表示將自動完成功能納入Flutter應用程式所需的最小功能,

圖片發布

自動完成是Flutter經常需要的功能,因此此版本開始提供此功能,您今天就可以使用它,但是如果您對完整功能的設計感到好奇,請查看自動完成設計檔案,

同樣,創建ScaffoldMessenger來處理許多與SnackBar相關的問題,包括能夠輕松創建SnackBar以回應AppBar動作,創建SnackBars以在Scaffold過渡之間持久存在的功能,以及能夠在SnackBars完成時顯示SnackBars的能力,即使用戶已導航到具有其他Scaffold的頁面,也將執行異步操作,

圖片發布

所有這些優點可以從現在開始使用幾行代碼來顯示SnackBars:

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

正如您可能想象的那樣,還有更多的東西,有關詳細資訊,請在ScaffoldMessenger上觀看Kate Lovett的精彩視頻,

具有Add-to-App的多個Flutter實體

從與許多Flutter開發人員的交談中我們了解到,您中的許多人沒有啟動全新應用程式的奢侈心意,但您可以通過將Flutter添加到現有的iOS和Android應用程式中來利用Flutter,此功能稱為Add-to-App,是在兩個移動平臺上重用Flutter代碼同時仍保留現有本機代碼庫的絕佳方法,但是,對于您中的那些人,我們有時會聽到,不清楚如何將第一個螢屏集成到Flutter中,將Flutter和本機螢屏交織在一起使導航狀態難以維護,并且在視圖級別集成多個Flutter會占用大量記憶體,

過去,其他Flutter實體的存盤成本與第一個實體相同,在Flutter 2中,我們將創建額外的Flutter引擎的靜態記憶體成本降低了約99%,每個實體約為180kB,

圖片發布

支持此功能的新API可以在beta通道上預覽,并在flutter.dev上進行了記錄,以及一系列演示此新模式的示例專案,通過此更改,我們不再猶豫建議在本機應用程式中創建Flutter引擎的多個實體,

Flutter修復

每當任何框架成熟并使用越來越多的代碼庫聚集用戶時,隨著時間的推移,趨勢就是避免對框架API進行任何更改,以避免破壞越來越多的代碼行,Flutter 2擁有超過500,000個Flutter開發人員,涉及的平臺數量越來越多,因此它很快就屬于這一類,但是,為了使我們能夠隨著時間的推移不斷改進Flutter,我們希望能夠對API進行重大更改,問題是,如何在不中斷開發人員的情況下繼續改進Flutter API?

我們的答案是Flutter Fix,

Flutter Fix是事物的組合,首先,dartCLI工具有一個新的命令列選項,名為dart fix,它知道在哪里可以查找已棄用的API串列以及如何使用這些API更新代碼,其次,它是可用修補程式本身的串列,與版本2捆綁在一起,最后,它是針對VS Code,IntelliJ和Android Studio IDE的更新的Flutter擴展集,它們知道如何公開相同的內容,可用的修復程式串列,如帶小燈泡的快速修復程式,可幫助您單擊滑鼠來更改代碼,

舉例來說,假設您的應用中包含以下代碼行:

使用不推薦使用的引數創建Flutter小部件

由于不贊成使用此建構式的引數,因此應將其替換為以下內容:

圖片發布

圖片發布

創建一個Flutter小部件,其中不推薦使用的引數已替換

即使您熟悉所有Flutter的棄用,您在代碼中必須進行的更改數量也就越大,應用所有修補程式的難度就越大,并且更容易出錯,人類在這類重復性任務上并不擅長,但是計算機是;通過執行以下命令,您可以看到我們知道如何在整個專案中進行的所有修復:

$ dart fix --dry-run

如果您想批量應用它們,可以輕松地這樣做:

$ dart fix --apply

或者,如果您想在自己喜歡的IDE中以互動方式應用這些修補程式,也可以這樣做,

圖片發布

多年來,我們一直在將舊的API標記為已棄用,但是現在有了關于何時洗掉實際已棄用的API的政策,Flutter 2是我們第一次這樣做,即使我們尚未捕獲所有已棄用的API作為資料來提供Flutter Fix,我們仍將繼續從先前已棄用的API中添加更多資訊,并將在未來的重大更改中繼續這樣做,我們的目標是盡最大努力使Flutter的API達到最佳狀態,同時還要使您的代碼保持最新,

Flutter DevTools

為了清楚說明DevTools是用于除錯Flutter應用程式的工具,我們在除錯Flutter應用程式時將其重命名為Flutter DevTools,此外,我們還做了很多作業,以使其達到Flutter 2的生產質量,

一項即使在您啟動DevTools之前也可以幫助您解決問題的新功能是,Android Studio,IntelliJ或Visual Studio Code能夠在出現常見例外時發出通知,并提供將其引入DevTools中以幫助您除錯的功能它,例如,以下內容顯示您的應用程式中已引發溢位例外,該例外會在Visual Studio Code中彈出一個選項,用于除錯DevTools中的問題,

圖片發布

Flutter IDE擴展會在您的應用引發布局溢位例外時發出通知

按下該按鈕可將您帶到出現問題的小部件上的DevTools中的Flutter Inspector,因此您可以對其進行修復,今天,我們僅針對布局溢位例外執行此操作,但我們的計劃是針對所有常見例外提供這種處理,DevTools可以解決這些例外,

一旦運行了DevTools,選項卡上的新錯誤標記將幫助您跟蹤應用程式中的特定問題,

圖片發布

DevTools中的紅點可幫助您專注于出現錯誤的應用程式部分

DevTools的另一個新功能是能夠輕松查看解析度比顯示的影像高的影像,這有助于跟蹤過多的應用程式大小和記憶體使用情況,要啟用此功能,請在Flutter Inspector中啟用“反轉超大影像”,

圖片發布

啟用“反轉超大影像”選項,以突出顯示比需要放大的影像大的影像,

現在,當您顯示解析度明顯大于其顯示尺寸的影像時,該影像將上下顛倒顯示,以便在您的應用中輕松查找,

圖片發布

實際應用中的“反轉超大影像”選項

此外,根據大眾的需求,除了在Flutter Inspector的“布局資源管理器”中顯示有關靈活布局的詳細資訊外,我們還添加了顯示固定布局的功能,使您能夠除錯各種布局,

圖片發布

新的版式資源管理器顯示了固定版式和彈性版式的版式詳細資訊

這還不是全部,這只是Flutter DevTools 2中更多新功能的摘要:

  • 在Flutter框架圖中添加了平均FPS資訊并提高了可用性
  • 用紅色錯誤標簽在網路事件探查器中調出失敗的網路請求
  • 新的記憶體視圖圖表更快,更小且更易于使用,其中包括用于描述特定時間活動的新懸浮卡,
  • 將搜索和過濾添加到“日志記錄”選項卡
  • 在啟動DevTools之前跟蹤日志,因此啟動時可以查看完整的日志歷史記錄
  • 將“性能”視圖重命名為“ CPU Profiler”,以使其更清楚地提供什么功能
  • 向CPU Profiler火焰圖添加了時序網格
  • 將“時間軸”視圖重命名為“性能”,以便更清楚地了解其提供的功能

而這并非全部,對于全套更改,我建議以下公告:

  • 開發工具0.9.4
  • 開發工具0.9.5
  • 開發工具0.9.6
  • 開發工具0.9.7
  • DevTools 2.0

Android Studio / IntelliJ擴展

用于IntelliJ系列IDE的Flutter插件也為Flutter 2獲得了許多新功能,首先,有一個新的專案向導,它與IntelliJ中的新向導樣式匹配,

圖片發布

圖片發布

另外,如果您正在Linux上使用IntelliJ或Android Studio對從Snap Store安裝的Flutter SDK進行編程,則Flutter快照路徑已添加到已知SDK路徑串列中,這使Flutter快照的用戶可以更輕松地在“設定”中配置Flutter SDK,感謝MarcusTomlinson @的貢獻!

圖片發布

通過Snap安裝的Flutter SDK,可以更輕松地使用Linux上的Android Studio,

您可以在公告中閱讀更多有關最新更新的內容:

  • IntelliJ插件M51
  • IntelliJ插件M52
  • IntelliJ插件M53
  • IntelliJ插件M54

Visual Studio代碼擴展

Visual Studio Code的Flutter擴展也對Flutter 2進行了改進,從許多測驗增強功能開始,包括重新運行僅失敗的測驗的功能,

圖片發布

經過兩年的開發,對Dart的LSP(語言服務器協議)支持現已作為默認方式提供給Dart分析器,以將其集成到Flutter擴展的Visual Studio Code中,LSP支持對Flutter開發進行了許多改進,包括能夠在當前Dart檔案中應用某種型別的所有修復程式,并使代碼完成生成完整的函式呼叫(包括括號和必需的引數)的功能,

圖片發布

圖片發布

LSP的支持不僅限于Dart,它還支持pubspec.yamlanalysis_options.yaml檔案中的代碼完成,

圖片發布

這些只是Flutter的Visual Studio Code擴展最近獲得的一些更新,您可以在以下公告中閱讀完整串列:

  • Visual Studio代碼插件v3.16
  • Visual Studio代碼插件v3.17
  • Visual Studio代碼插件v3.18
  • Visual Studio代碼插件v3.19
  • Visual Studio代碼插件v3.20

DartPad已更新為支持Flutter 2

如果不提及DartPad,則該工具更新串列將不完整,而DartPad已更新為支持Flutter 2,

圖片發布

DartPad已針對Flutter 2更新

現在,您可以嘗試使用Flutter的新的空安全版本,而無需離開自己喜歡的瀏覽器,

生態系統更新

Flutter的開發經驗不僅包含框架和工具,還包括其他內容,它還包括適用于Flutter應用程式的各種軟體包和插件,自上一次Flutter穩定版本發布以來,該領域也發生了很多事情,例如,在攝像機和video_player插件之間,已合并了將近30個PR,以大大提高兩者的質量,如果您以前在使用這兩種方法時遇到麻煩,則應該再看一遍;我們認為您會發現它們更加強大,

另外,如果你是一個火力地堡的用戶,我們很高興地宣布,最流行的插件已被帶到生產質量,包括空安全的支持,以及全套的參考檔案和常見的使用教程使用Android,iOS,網頁,和macOS,這些插件包括:

  • 驗證
  • 云消防站
  • 云功能
  • 云訊息傳遞
  • 云儲存
  • 速溶藥

另外,如果您正在尋找應用程式的崩潰報告,則可能需要考慮Sentry,該公司已經發布了適用于Flutter應用程式的新SDK,

圖片發布

Sentry崩潰報告工具現在支持Flutter

借助Sentry的Flutter SDK,您可以實時收到在Android,iOS或本機平臺上發生的錯誤的通知,您可以在Sentry檔案中查看詳細資訊,

此外,如果您還沒有看到Flutter Community的“ plus”插件,則需要將其簽出,他們分叉了Flutter團隊最初開發的許多受歡迎的插件,并添加了null安全支持,對其他平臺的支持和一整套全新的檔案,以及開始修復flutter / plugins存盤庫中的適當問題,該插件包括以下內容:

  • Android鬧鐘+
  • Android Intent +
  • 電池+
  • 連通性+
  • 設備資訊+
  • 網路資訊+
  • 套餐資訊+
  • 傳感器+
  • 分享+

此時,與Flutter兼容的軟體包和插件集的數量超過15,000,這使得很難找到您應該首先考慮的軟體包和插件,因此,我們會發布發布點數(靜態分析得分),受歡迎程度,喜歡度,并且,對于特別高的質量,會發布那些特別標記為Flutter Favorite的包裝,為了及時應對Flutter 2,我們在收藏夾串列中添加了幾個新軟體包:

  • animation_text_kit
  • bottom_navy_bar
  • 斬波器
  • font_awesome_flutter
  • flutter_local_notifications
  • just_audio

恭喜這些軟體包的作者!如果您尚未簽出它們,或者尚未列出串列中的其余軟體包,則應該這樣做,

最后但并非最不重要的一點是,對于對軟體包的最新版本是否適用于Flutter的最新版本感興趣的軟體包作者或軟體包用戶,您將需要訪問Codemagic的新pub.green網站,

圖片發布

Codemagic的新pub.green網站顯示了最新Flutter版本與頂級軟體包的兼容性

pub.green網站測驗了pub.dev上可用的Flutter和Dart軟體包與不同Flutter版本的兼容性,將其視為Flutter的“我可以使用”,有關更多詳細資訊,我建議CodeMagic團隊發布公告博客,

重大變化

我們對Flutter 2進行了以下重大更改,其中許多可以使用dart fix命令或所選IDE中的快速修復程式自動緩解:

  • 61366繼續剪輯行為更改
  • 66700默認FittedBox的clipBehavior為無
  • 68905從Cupertino顏色解析度API洗掉nullOk引數
  • 69808從Scaffold.of和ScaffoldMessenger.of洗掉nullOk,為兩者創建
  • 68910從Router.of中洗掉nullOk引數,并使其回傳不可為空的值
  • 68911添加maybeLocaleOf到本地化
  • 68736在Media.queryOf洗掉nullOK
  • 68917從Focus.of,FocusTraversalOrder.of和FocusTraversalGroup.of中洗掉nullOk引數
  • 68921從Shortcuts.of,Actions.find和Actions.handler中洗掉nullOk引數
  • 68925從AnimatedList.of和SliverAnimatedList.of中洗掉nullOk引數
  • 69620從BuildContex中洗掉不贊成使用的方法
  • 70726從Navigator.of中洗掉nullOk引數,并添加Navigator.maybeOft
  • 72017洗掉不推薦使用的CupertinoTextThemeData.brightness
  • 72395.從HoverEvent中洗掉不建議使用的[PointerEnterEvent,PointerExitEvent],
  • 72532洗掉不建議使用的showDialog.child
  • 72890洗掉不推薦使用的Scaffold.resizeToAvoidBottomPadding
  • 72893洗掉不贊成使用的WidgetsBinding,[deferFirstFrameReport,allowFirstFrameReport]
  • 72901洗掉不推薦使用的StatefulElement.inheritFromElement
  • 72903洗掉不推薦使用的Element方法
  • 73604洗掉不建議使用的CupertinoDialog
  • 73745從庫比蒂諾[Sliver] NavigationBar洗掉不贊成使用的actionForegroundColor
  • 73746洗掉不贊成使用的ButtonTheme.bar
  • 73747洗掉跨度棄用
  • 73748洗掉棄用的RenderView.scheduleInitialFrame
  • 73749洗掉不贊成使用的Layer.findAll
  • 75657從Localizations.localeOf洗掉殘留的nullOk引數
  • 74680從Actions.invoke洗掉nullOk,添加Actions.maybeInvoke

概括

最后,我們在Google Flutter團隊的所有成員中,我們要說-謝謝,感謝×150,000,在過去兩年中,社區中推出了超過150,000個Flutter應用程式,萬一您錯過了它,我們會在Flutter Engage主題演講的開幕式中播放針對社區的Mashup Video,其中匯集了一些我們最喜歡的Flutter應用程式,

沒有您對我們所有人正在創造的東西的持續支持和激動,就不可能成為世界上最具活力的全球開發者社區之一,我們迫不及待想看看您接下來將要做什么,

交流

老孟Flutter博客(330個控制元件用法+實戰入門系列文章):http://laomengit.com

添加微信或者公眾號領取 《330個控制元件大全》和 《Flutter 實戰》PDF,

歡迎加入Flutter交流群(微信:laomengit)、關注公眾號【老孟Flutter】:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/267276.html

標籤:Dart

上一篇:分享一個有意思的gdb插件

下一篇:SpringBoot啟動流程分析原理(一)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more