Google Summer of Code (GSoC) 是一個全球性的計畫,旨在讓學生開發者參與開源軟體開發。Google 贊助學生在夏季與一個指導性的開源組織合作進行一個 12 週以上的程式設計專案。在過去的 17 年裡,已有超過 18,000 名學生參與了 Google Summer of Code。
我們很高興地宣布,Dart 將在 2022 年的 Google Summer of Code 中擔任指導組織(這是第三次!)。查看成果文章,了解更多關於 2020 年和 2021 年的優秀專案。
$ dart pub token add https://dart-packages.example.com Enter secret token: [輸入秘密權杖] Requests to "dart-packages.example.com" will now be authenticated using the secret token.
$ dart pub token add https://dart-packages.example.com --env-var MY_SECRET_TOKEN Requests to "https://dart-packages.example.com" will now be authenticated using the secret token stored in the environment variable "MY_SECRET_TOKEN".
這可確保 dart pub 不會實際將秘密儲存在其設定檔中,而只是儲存它應該從環境變數 $MY_SECRET_TOKEN 中讀取秘密的事實。這允許在 CI 環境中操作時僅將秘密儲存在環境變數中,並降低了如果執行環境在 CI 作業之間共享時秘密意外洩露的風險。
$ dart pub publish Publishing mypkg 1.0.0 to https://dart-packages.example.com |-- CHANGELOG.md |-- LICENSE |-- README.md |-- lib | '-- mypkg.dart '-- pubspec.yaml Package validation found the following potential issue: * It's strongly recommended to include a "homepage" or "repository" field in your pubspec.yaml ...
每年,我們和其他 Google 的大型團隊一樣,都會進行規劃過程,以設定我們在未來一年的目標和重點領域。通常,產品團隊會嚴格保護這些文件,因為它們可能包含商業敏感資訊,或與競爭優勢領域相關。然而,作為一個開源專案,我們認為透明度是一種美德:它可以讓人們更信賴我們的未來和方向,並讓其他人更清楚地了解他們的投資如何與我們的投資相連。
因此,今天我們首次與整個社群分享我們的 年度策略文件。在這個文件中,我們表達了我們的使命,分享了一些指導原則,並描述了我們計劃在未來一年進行的主要投資。出於必要,我們做了一些小幅度修改(例如,商業敏感資料或對未宣布產品的參考),但我們相信這提供了對我們計劃良好的概述。這個策略文件應該與我們 wiki 上的 工程路線圖 一起閱讀,後者提供了有關我們正在開發的功能的更多細節。
關於以上句子中使用「我們」這個詞的一個重要說明,這可能被理解為「那些 Google 付錢讓他們在 Flutter 上工作的人」。Flutter 是 Google 內外許多貢獻者的成果。雖然 Google 是最大的贊助商,以付費貢獻者的數量衡量,但它不是唯一的貢獻者。在過去的一年裡,數千名個人為該專案貢獻了他們的智慧財產和勞動力,從個人到 Canonical、Microsoft、ByteDance 和阿里巴巴等大型企業。
因此,雖然策略文件描述了 Google 的投資並分享了這些決策背後的理由,但它並不打算限制他人對 Flutter 的貢獻方式。我們希望我們的作品能夠很好地滿足整個社群的需求,但我們預計分享這個文件的一個好處是,其他人將看到他們自己的投資機會,無論是建立在 Google 計劃貢獻的作品之上,還是填補我們沒有優先考慮的領域。
這方面的例子包括 Sony 在 嵌入式 Linux 上的工作;Toyota 和其他汽車公司在 汽車級 Linux 中使用 Flutter 的投資,以及三星和其他公司將 Flutter 移植到 Tizen 的工作。雖然這些工作都沒有列在我們的策略文件中,但它仍然是 Flutter 專案的一部分,就像 Google 貢獻的任何程式碼一樣。當然,還有數萬個建立在框架之上的套件,其中絕大多數來自 Google 之外的開發人員。
這個版本有許多令人興奮的更新,包括 Flutter 對 Windows 支援的重大進展、幾個重要的效能提升、框架中對圖示和顏色的新支援,以及一些工具的改進。此外,我們還有一些關於移除 dev 頻道的更新、對舊版 iOS 的支援減少,以及一些重大變化的簡短清單。讓我們開始吧!
Windows 上的生產應用程式準備就緒
首先,Flutter 2.10 版本帶來了 Windows 支援的穩定版本。您不再需要切換旗標來獲得在 Flutter 的 stable 頻道上生成 Windows 應用程式的功能 - 現在這個功能預設提供!
當然,我們做的不僅僅是切換旗標。這個版本包括對文字處理、鍵盤處理和鍵盤快捷鍵的廣泛改進,以及與 Windows 的直接整合,支援命令列參數、全球化文字輸入和無障礙功能。
關於 Windows 穩定版發佈的更多資訊,請參閱 宣布 Flutter for Windows 部落格文章,這篇文章描述了 Flutter 在 Windows 上的架構,它允許深度整合,並讓您了解有多少 Flutter 套件和插件已經支援 Windows。您也可以看到我們的工具和應用程式合作夥伴使用 Flutter 在 Windows 上做的一些例子!
這個版本還包含一些針對 Web 的改進。例如,在之前的版本中,當捲軸到 Web 上多行 TextField 的邊緣時,它不會正確捲軸。這個版本引入了 文字選取的邊緣捲軸:當選取範圍移動到文字欄位之外時,欄位會捲軸以顯示捲軸範圍。這種新的行為適用於 Web 和桌面應用程式。
此外,這個版本的 Flutter 包含了另一個針對 Web 的顯著改進。我們一直在尋找方法來減少 Flutter 對 Web 的對映開銷。在之前的版本中,每次我們想要將原生 HTML Widget 加入到 Flutter 應用程式時,我們都需要一個覆蓋層作為我們針對 Web 的平台視圖支援的一部分。這些覆蓋層中的每一個都允許自訂繪製,但會造成一定程度的開銷。如果您的應用程式中有大量的原生 HTML Widget,例如連結,這些開銷會加起來。在此版本中,我們為 Web 建立了一個新的「非繪製平台視圖」,基本上消除了這種開銷。我們已經 在 連結 Widget 中利用了這種優化,這意味著如果您的 Flutter Web 應用程式中有許多連結,它們將不再會造成任何顯著的開銷。我們將隨著時間推移將這種優化應用於其他 Widget。