日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Flutter 1.17 | 2020 首个稳定版发布!

發布時間:2024/9/15 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Flutter 1.17 | 2020 首个稳定版发布! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者 / Chris Sells, Product Manager, Flutter developer experience

很高興為大家帶來 Flutter 1.17,這也是我們 2020 年的第一個穩定發布版本。

今年對每個人來說都是充滿挑戰的一年。我們的目標是每季度發布一次穩定版,由于我們一直在針對新的發布流程調整基礎設施,本次版本發布有所推遲。然而品質依然是我們的第一要務,新的版本發布流程將提升我們為穩定分支提供高質量熱修復的能力。本次發布的版本包含大量的修復,自 1.12 穩定版發布以來,我們已經解決了 6,339 個 Issue,這是史無前例的大進展。而這很大程度上要歸功于我們與 Nevercode 的合作,在用戶提出問題時我們可以更快地響應。截至現在,我們已經解決的 bug 數量超過新增數量,報錯總數減少了大約 800 個。這些 bug 中相當的一部分已通過合并 3,164 個 pull request 進行了修復,它們來自 231 位貢獻者。這些數據都令人振奮,我們也衷心感謝大家在這個特殊時期的勤奮工作和持續貢獻。

  • 與 Nevercode 的合作

    https://blog.codemagic.io/flutter-and-codemagic-join-forces-on-github/

如果您想查看我們在這個版本中合并的所有 pull request,請前往 flutter.cn 了解詳情。除了品質方面的改進,我們還設法在這個版本中加入了一些新功能,包括 iOS 系統中的 Metal 支持、全新的 Material 組件、全新的網絡跟蹤工具等等。這個版本還包括了 Dart 2.8,請閱讀今天發布的二條文章詳細了解。

移動端性能和文件體積優化

性能和內存方面的整體優化是 1.17 版的重點之一。只需將您的工程升級到使用 Flutter 1.17,您的用戶就能體驗到更快速流暢的動畫、更小巧的應用尺寸,以及更低的內存占用。在默認的導航場景下 (不包含透明圖層內容的導航路徑) 1.17 版的速度提升了 20%-37%。簡單 iOS 動畫的 CPU/GPU 占用可減少高達 40%,具體的減少量取決于硬件 (詳見 PR 14104 和 PR 13976)。

  • 導航速度提升

    https://github.com/flutter/flutter/pull/48900

  • PR 14104

    https://github.com/flutter/engine/pull/14104

  • PR 13976

    https://github.com/flutter/engine/pull/13976

得益于我們的多項修復工作,新版本還在應用體積上做出了可觀的改進。比如 Flutter Gallery 范例應用的 Android 版本在去年年底是 9.6MB,現在則是 8.1MB,體積減少了 18.5%。

  • 我們做出的多項修復

    https://github.com/dart-lang/sdk/commit/f56b0f690789b6f0e2e5bc1340abf4eba414b7a0

    https://github.com/dart-lang/sdk/commit/a2bb7301c5795e6b28089a8dc96e6ab5ca798e22

    https://github.com/dart-lang/sdk/commit/d77f4913a18ecce8c4be95cbaa4299ff1521dc10

    https://github.com/dart-lang/sdk/commit/e2faac751e1ef3707730e6e48f4d8f22ecbf35c3

    https://github.com/dart-lang/sdk/commit/8e7ffafbafc8203361111ddcafe0e0fcc372edf8

內存使用方面也有明顯的優化,例如在快速滾動大型圖片時內存占用減少了 70%,進而提升性能,具體提升的程度取決于設備內存的大小。

  • 優化內存占用

    https://github.com/flutter/engine/pull/14265

△ 測試應用的內存占用量隨著 PR 合并的變化 (豎條越短內存占用越少)

不過最大的性能提升來自在 iOS 系統中實現對 Metal 的支持。

Metal 將 iOS 性能提升 50%?

Apple 的 Metal API 使開發者幾乎直接訪問底層 GPU,它也是 Apple 推薦使用的圖形 API。在支持 Metal 的 iOS 設備上,Flutter 將默認使用 Metal,使得應用在絕大多數情況下都運行得更快,渲染速度平均提升約 50% (具體取決于設備的工作負載)。

  • 渲染速度平均提升約 50%

    https://github.com/flutter/flutter/issues/53768

△ 測試 iOS 應用在 OpenGL 和 Metal 下的幀渲染時間 (值越低越好)

對于那些不完全支持 Metal 的設備 (使用 A7 之前的處理器或 iOS 10 之前系統的設備),Flutter 會和以前一樣使用 OpenGL,在這些設備上實現原生渲染速度。更多詳情,請查看 Flutter wiki 上的 iOS Metal 常見問題解答。

  • iOS Metal 常見問題解答

    https://github.com/flutter/flutter/wiki/Metal-on-iOS-FAQ

Material widgets: NavigationRail, DatePicker, 以及更多

基于多方用戶的反饋,我們也在持續推進 Material 設計系統在 Flutter 中落地。在新版本中我們加入了 NavigationRail,這是一個新的 widget,提供了響應式的應用導航模型。它由 Google Material Design 團隊設計并實現。NavigationRail 非常適合可以在移動和桌面設備之間切換的應用,當您的應用所在的屏幕尺寸增大時,您可以非常容易地從 BottomNavigator 切換成 NavigationRail。

  • NavigationRail API

    https://master-api.flutter-io.cn/flutter/material/NavigationRail-class.html

  • Material 組件:?NavigationRail

    https://material.io/components/navigation-rail

△ 新加入的 NavigationRail widget

您可以在 web_dashboard 樣例或者 DartPad 中實際體驗 NavigationRail。

  • web_dashboard 樣例

    https://github.com/flutter/samples/tree/master/experimental/web_dashboard

  • DartPad

    https://dartpad.cn/b9c6cd345fd1cff643353c1f4902f888

除了加入新的 widget 之外,新版本還更新了 Material DatePicker 以及修正了文字選擇菜單 widget 的溢出顯示問題。

  • DatePicker

    https://api.flutter.dev/flutter/material/showDatePicker.html

△ 新的 Material DatePicker widget

DatePicker 基于更新過的 Material 設計指南引入了新的視覺設計,并新增了文本輸入模式。詳情請閱讀 Material DatePicker 改版文檔。

  • Material 設計指南

    https://material.io/components/pickers/#mobile-pickers

  • Material DatePicker 改版文檔

    https://flutter.dev/go/material-date-picker-redesign

△ Android 上新版文字選擇懸浮菜單

△ iOS 上新版文字選擇懸浮菜單

如上圖,當按鈕總長度超過了顯示范圍時,Android 和 iOS 中的文本選擇菜單保真度也得到了提高。菜單文本越長,這項更新越顯著。

  • Android 版文本選擇菜單

    https://github.com/flutter/flutter/pull/49391

  • iOS 版文本選擇菜單

    https://github.com/flutter/flutter/pull/54140

另外,全新的 Animations Package,雖然并沒有被包含進 Flutter 1.17 版本中,但也已同期發布。它實現了新的 Material 動效規范。

  • 全新的 Animations Package

    https://pub.flutter-io.cn/packages/animations

  • 新的 Material 動效規范

    https://material.io/design/motion/the-motion-system.html

△ Animations Package 中的容器轉場動畫

在《實現動效太難了?試試 Material Design》一文中,Material Design 團隊給出了組件與全屏視圖之間的四種轉場模式: 容器變換、共享軸、淡入淡出和彈出效果。雖然 Flutter 一直就可以實現這些動效,但 Animations Package 讓您可以更輕松地實現它們。今天就在應用里試試這些動效,讓您的用戶們眼前一亮吧!?

Material 文字縮放:?現代化 Flutter 文字主題

在新版本中,Flutter 團隊在不破壞現有 Flutter 應用的同時,完成了對 2018 年 Material Design 規范文字排版縮放 (Type Scale) 的實現。2018 年 10 月,我們在 PR 22330 中添加了對新配置 (而不是新名稱) 的可選支持?,F有的文本樣式名稱沒有更改,因為這屬于重大的 API 更改,可能會影響到大多數應用。Flutter 1.17 更新了 TextTheme API,以遵循當前的 Material 規范,但保留了舊的名稱,從而不影響您的代碼。由于舊的名稱已經被廢棄,您將收到 warning 提示,建議采用新的名稱。

  • Material Design: 文字縮放排版

    https://material.io/design/typography/the-type-system.html#type-scale

  • PR 22330

    https://github.com/flutter/flutter/pull/22330

2018 年 Material TextStyle 的名稱和配置匯總如下表所示。

Material Design 規范中稱為 body1 和 body2 的 TextStyle 在 Flutter TextTheme API 中被稱為 bodyText1 和 bodyText2。同樣的,在規范中稱為 H1-H6 的 TextStyle,在 TextTheme API 中稱為 headline1-headline6。

在 Flutter 中使用 Google Fonts

文本和字體總是密不可分,如果新的 Material 文字縮放實現讓您眼前一亮,那么您可能也會對新的 Google Fonts for Flutter v1.0 頗感興趣。

  • Google Fonts for Flutter v1.0

    https://medium.com/flutter/introducing-google-fonts-for-flutter-v-1-0-0-c0e993617118

△ 在 Flutter 應用中輕松使用 Google Fonts

開發者可以通過 Google Fonts 在應用中輕松嘗試和使用 fonts.google.com 中的字體。當應用準備發布時,開發者也可以決定是通過 API 來下載字體,還是在應用包中直接嵌入字體。

無障礙功能和國際化

最后是我們持續關注的課題——無障礙功能。我們認為,讓 Flutter 應用可以服務最為廣泛的受眾是我們的首要任務之一。在新版本中,我們做了全面的工作,對滾動、文本框以及其他輸入 widget 的無障礙功能進行了修復。GitHub 上有我們在這個版本中完成修復的無障礙功能完整列表。我們希望開發者能多多測試自己應用的無障礙功能,并且隨著這次版本還發布了一些推薦的最佳實踐供大家參考。

  • GitHub 上的無障礙修復完整列表

    https://github.com/flutter/flutter

  • 無障礙功能最佳實踐

    https://flutter.dev/docs/development/accessibility-and-localization/accessibility

在國際化方面,我們一直在處理一些影響三星鍵盤 IME 的問題,這影響了許多東亞語言的文字輸入?,F在我們很高興地宣布這個問題已經解決。各國開發者,尤其是韓國的開發者會在這個版本中發現不少喜人的變化。

  • 三星鍵盤問題 (已修復)

    https://github.com/flutter/flutter/issues/42273

工具:?Dart DevTools 支持 Flutter

將當前版本的 Dart DevTools 替換成新的 Flutter 版本,這一進程通過 Flutter 1.17 已經接近完成。如果您想試試新的 Flutter 版 Dart DevTools,請在啟動 DevTools 后點擊右上角的 Beaker (燒瓶) 圖標。

由 Flutter 實現的 Dart DevTools 預發布版本帶來了諸多改進,其中全新的 Network (網絡) 選項卡最為重要。

如果您在 Dart DevTools 的預發布版本中沒有看到 Network 選項卡 (比如,您是通過命令行來使用 DevTools),可以通過如下命令手動更新它:

$ pub global activate devtools

在按下 Record (錄制) 按鈕后, Network 選項卡會顯示您的 Flutter 應用的網絡流量情況。如果您想在應用啟動時就立即開始監測網絡流量,可以在您的 main() 方法中加入這行代碼:

void?main()?{//?enable?network?traffic?loggingHttpClient.enableTimelineLogging?=?true;runApp(MyApp()); }

除了 Dart DevTools 的更新之外,這個版本還實驗性地增加了 "快速啟動" 選項,當您調試 Android 版 Flutter 應用時,其啟動速度可以提升高達 70%。您可以通過 flutter run --fast-start -d <your Android device> 來啟用這個選項。這個選項會安裝一個只依賴您的插件代碼的通用 Android 應用,而不包含任何 Dart 代碼或資源。這會讓重復運行的 flutter run 命令更快地啟動,因為修改 Dart 代碼或資源并不需要重新構建 APK。和通常的啟動選項不同,快速啟動選項將您的應用綁定到了一個通用的 Android "容器" 中,實際上并不會在您的設備上安裝。在一些情況下,比如您使用的插件訪問了后臺執行的內容,快速啟動選項將不起作用。如果您覺得 Android 調試的啟動時間漫長得讓人頭疼,不妨試試這個全新的選項吧。

  • 快速啟動選項

    https://github.com/flutter/flutter/pull/46140

如果您的目標平臺是 Android,您會注意到,現在創建新的 Flutter 項目時只提供 AndroidX 選項。AndroidX 庫提供了被稱為 Android Jetpack 的高級 Android 功能。在上一個版本中,我們不再支持原先的 Android Support Library,轉而將 AndroidX 作為所有新項目的默認選項。在 Flutter 1.17 中,flutter create 命令只有 --androidx 這一個選項。雖然現有的不使用 AndroidX 的 Flutter 應用依然可以編譯,但是時候遷移至 AndroidX 了。

  • AndroidX

    https://developer.android.google.cn/jetpack/androidx

  • Android Jetpack

    https://developer.android.google.cn/jetpack/

如果您使用 Android Studio 或 IntelliJ,您會發現 Hot Reload (熱重載) 功能的容錯性更強了。在本次更新之前,如果您的應用出現了任何分析錯誤,Hot Reload 將不會重新加載您的代碼。如果分析錯誤并不涉及您當前正在運行的代碼 (比如在單元測試中),會讓人很崩潰。但通過本次更新,Hot Reload 將不再受分析錯誤影響,而取決于 VM 中的編譯錯誤。

  • 本次更新

    https://groups.google.com/forum/m/#!topic/flutter-announce/tTgQcTgqrKg

如果您想更早地體驗 Android Studio 或 IntelliJ 的 Flutter 插件中類似的改進,我們現在也為 IntelliJ 插件提供了 dev 渠道,您可以選擇加入,以更快獲取到這些更新。這個 dev 渠道的目標是在公開發布新 IDE 集成功能前通過 Flutter 開發者收集反饋。如果您希望嘗鮮并且愿意向 Flutter 工具團隊提供早期反饋,請即刻加入我們的體驗計劃!

  • IntelliJ 插件的 dev 渠道

    https://groups.google.com/forum/m/#!topic/flutter-announce/tTgQcTgqrKg

  • 加入體驗計劃

    https://groups.google.com/forum/m/#!topic/flutter-announce/tTgQcTgqrKg

如果您使用的是 Visual Studio Code,我們推薦使用新的 Dart: List Outdated Packages 命令來運行新的 pub outdedated 命令。詳情請見 Dart 2.8 發布 (今日微信二條文章)。

這個命令用于厘清依賴項中的版本問題。

最后值得一提的是,現在當 Flutter 崩潰時,工具會提示您上報這個 bug:

我們的團隊會密切關注這些錯誤報告的嚴重程度和出現頻率,所以當這些提示出現時,請提交 bug 給我們。

案例分享:?MGM 和 Superformula

Flutter 的存在是為了實現精美的應用體驗。數字開發商 Superformula 最近就完成了一件精彩的作品:?他們最近與 MGM Resorts (美高梅酒店集團) 合作,完全使用 Flutter 對其移動應用進行了重構。他們反饋道,"在核心產品中引入 Flutter,為我們的客戶和他們的用戶帶來了更快的速度和更高的靈活性,從而為他們帶來了真正的、可衡量的價值。"

  • Superformula

    https://superformula.com/flutter/

  • MGM Resorts 重構移動應用

    https://www2.mgmresorts.com/app/

Superformula 與 MGM Resorts 設計團隊合作,為所有主要的網絡、移動和店頭體驗打造了全新的 MGM 設計語言。這個規模不大的團隊使用全新的 Flutter 源碼庫更快地完成了應用改版,并在兩個應用商店上架,使得 MGM 的預訂轉化率提高了 9%。

重要改動 (Breaking Changes)

和以往一樣,我們會盡量減少每一個 Flutter 新版本中的重要改動,我們會反復權衡利弊,確保 Flutter 能夠提供直觀、靈活的 API,能夠在新平臺上支持新的開發習慣。在去年的用戶調查中,開發者表示可以接受經過深思熟慮的、能夠改善框架的重要改動。因此,我們正在穩步、審慎地更新 API。Flutter 1.17 中的重要改動包括:

  • #42100 在使用 pushReplacement 時使用之前的路徑運行后續動畫

  • #45940 棄用 UpdateLiveRegionEvent

  • #49389 在高速滾動時推遲圖像解碼

  • #49391 文本選取溢出 (Android)

  • #49771 斷言緩存提示未針對空繪圖對象進行設置

  • #50318 實時圖像緩存

  • #50354 使用構造塊高度計算選區范圍,確保其維持在可視范圍內

  • #50733 在 gen_l10n 中生成消息查詢

  • #51435 從 RouteSettings 中移除 isinitialroute

  • #52781 將 mouse_tracking.dart 移動到 rendering

小結

隨著移動端支持的不斷成熟,以及 web 端逐步穩定,Flutter 有望解決困擾行業幾十年的問題: 如何通過單一代碼庫構建出多平臺部署的優秀應用?Flutter 成長至今的表現讓我們相信,我們正走在正確的道路上,也期待著您精彩的 Flutter 作品!

END 最后說個題外話,相信大家都知道視頻號了,隨著灰度范圍擴大,越來越多的小伙伴都開通了視頻號。小詹也開通了一個視頻號,會分享互聯網那些事、讀書心得與副業經驗,歡迎掃碼關注,和小詹一起向上生長!「沒有開通發布權限的盡量多互動,提升活躍度可以更快開通哦」(聽我一分鐘,生活更輕松)(掃碼回復 1024 即可領取IT資料包)

總結

以上是生活随笔為你收集整理的Flutter 1.17 | 2020 首个稳定版发布!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。