0%

【文章翻譯】Flutter Package Ecosystem Update

【文章內容使用 Gemini 1.5 Pro 自動產生】

Flutter 套件生態系統更新

Google 的 Flutter 團隊只有一個工作:為開發者提供跨多個平台構建美麗、原生應用程式的管道。當 Flutter 還很新時,團隊透過專注於少數最初的客戶來實現了這個目標。這導致了文字和圖形的可攜式渲染引擎的誕生。接下來是擴展其覆蓋範圍,團隊透過吸引開發者,結合 Dart 平台的強大功能,易於使用的 Flutter API,以及跨 Android 和 iOS 的原生編譯,來實現了這個目標。隨著客戶群的增長,他們的需求也隨之增長,促使團隊利用 Dart 的 pub.dev 提供 Flutter 套件管理員和發現機制,將套件作者與應用程式開發者聯繫起來。

最後一步尤其重要,因為它使 Flutter 社群能夠互相幫助,而無需 Flutter 團隊的干預。在 pub.dev 上發佈或使用套件之前,沒有人需要詢問。另一方面,為培育這種生態系統,擁有建立現代 Flutter 應用程式構建基礎的信賴代理非常重要。Google 的 Flutter 團隊提供了信賴的平台,Flutter 社群可以在其上繼續發展壯大。

套件發佈者、評分和最愛

為了幫助使 Flutter 套件生態系統值得信賴,我們在 pub.dev 上公開了有關每個套件的許多指標:

這是 provider 套件 的螢幕截圖,它在 Flutter 生態系統中的普及程度和品質方面名列前茅。此螢幕截圖展示了我們用於在 pub.dev 上傳遞品質信號的幾個指標。域名旁邊的藍色盾牌是 已驗證發佈者,讓您知道套件是由身份已驗證的人發佈的。豎起大拇指圖示及其旁邊的數字顯示了「讚」的數量,讓您知道社群中其他成員對這個套件的感受。最後,最右邊的圖示將套件標記為 Flutter 最愛,表示當您構建應用程式時應該先考慮的套件。僅供比較,在過去三個月的時間裡,積極維護的套件的平均好感度為 12 個讚,而對於 Flutter 最愛,則為 270 個讚。若要找到品質最高的套件,Flutter 最愛指標 會將 pub.dev 分數與許多客觀和主觀的品質、可用性和廣泛適用性指標結合在一起,其中包括來自 Flutter 框架本身的貢獻者之一的工程程式碼審查。

由於門檻很高,因此 Flutter 最愛標記並非經常出現 - 它只出現在 少數套件上。今天,我很高興地宣布,該清單已擴展到包含以下內容:blocflutter_blocconvex_bottom_bargeolocatorgoogle_fontslocation,以及 sign_in_with_apple。恭喜所有作者,並衷心感謝您對 Flutter 套件生態系統的貢獻。

使用 Apple 登入

此輪 Flutter 最愛獎項中最顯著的 Plugin 之一是 sign_in_with_apple Plugin

它不僅品質高,而且適用性廣,還填補了 Flutter 功能集中的重要空白。Apple 已宣布,到 2020 年 6 月 30 日,使用其他第三方驗證(如 Google 登入)的應用程式必須啟用 Apple 登入才能被 App Store 接受。顯然,對於任何以 iOS 為目標的 Flutter 開發者而言,這都是至關重要的功能,但 Google 的 Flutter 團隊並沒有自行建立 Plugin 來填補這個空白,而是依賴於我們的社群。聯絡到 sign_in_with_apple 的作者 Timm Preetz 和 Henri Beck,我們發現他們反應迅速,並在創紀錄的時間內迅速將 Plugin 提升到所需的標準。

提高數量和品質

只有透過 Flutter 套件生態系統的成熟和多元化,我們才能與社群合作,實現像 sign_in_with_apple Plugin 這樣的事情。如果您查看 Flutter 相依套件隨著時間推移的數量,您可以看到生態系統的增長。

自 1.0 版本以來的 Flutter 相依套件數量

通常,您會期望這種驚人的增長會伴隨著整體品質下降。然而,Flutter 社群正在見證截然相反的趨勢。

自 1.0 版本以來的 Flutter 相依高品質套件的百分比

我們將品質衡量為 pub.dev 上整體分數的健康度和維護部分。如您所見,自 Flutter 1.0 版本發佈以來,儘管套件生態系統的增長巨大,但其整體品質卻有所提高。

將 Google Flutter Plugin 移至 1.0

不僅社群會產生 Plugin。Google 的 Flutter 團隊也提供了一組 Plugin。其中許多 Plugin 被標記為 Flutter 最愛套件,表明其品質很高,包括 shared_preferencespath_providerurl_launcher 等等。然而,這些 Plugin 並不都是被標記為「1.0」;例如,shared_preferences 被標記為「0.5.7+2」,這在我們認為已準備好投入生產使用的 Plugin 方面似乎並不直觀。原因在於 Dart 如何處理版本:

根據慣例,我們建議開發者在相依於套件時使用插入符號語法,例如:^current-version。此語法由 flutter pub get 解釋為「我希望獲得比我指定版本高或與我指定的版本相同,但在不更改主要版本的條件下獲得最高可用版本」。這是 Dart 的實作 語義化版本控制,它指出主要版本應與重大變更一起使用,並且應明確選擇。但是,在由 Google 維護的這組 Flutter Plugin 中,我們已穩定 API,因此可以安全地指定版本字串以包含 1.x 版本,您可以像這樣在 pubspec.yaml 中進行操作:

1
2
dependencies:
shared_preferences: **‘>=0.5.7+2 <2.0.0’**

對於這組 Plugin,您可以使用以下版本字串來準備 v1.0,而不是傳統的版本:

在您按照這些行更新 pubspec.yaml 之前,如果我們將版本號碼提升到 1.0.0,您的應用程式和相依套件將不會獲得更新。對於 1.0 來說這是可以的,因為它與上面列出的 0.x 版本沒有任何不同,但是 1.1 及以後版本如何呢?這就是您需要進行這些更改的原因。

在某些情況下,我們可以提供幫助。例如,pub.dev 上有 181 個套件相依於 shared_preferences。如果您的應用程式相依於 shared_preferences <2.0.0,並且也相依於另一個進而相依於 shared_preferences <1.0.0 的套件,則 Dart 版本解析器永遠不會給您 1.0.0(或 1.1.0 或…)。但是,我們並沒有等待和希望這些 181 個套件的作者閱讀這篇部落格文章並更新他們對上面列出的所有 Plugin 的相依版本字串,而是積極地努力向包含套件 pubspec.yaml 的 git 儲存庫提交 PR,以匹配上面表格中的版本字串。這樣,當我們將 Google Flutter Plugin 中目前為 0.x 的版本號碼更改為 1.0.0 時,您的應用程式將會全部設定好,您相依的套件也將全部設定好。

將 Google Flutter Plugin 推向生產環境

您可能已經注意到,並非所有 Google Flutter Plugin 都列在上面的討論中,例如 Firebase、Camera、Video Player 等等。這是因為我們還需要對一些 Plugin 做些工作,才能將它們提升到生產品質;例如,Firebase Plugin 需要更完善、更詳細的文檔,以及更快的構建時間和更簡單的設定。為了幫助我們實現這個目標,我很高興地宣布,我們與 Invertase 達成了合作,Invertase 是一家位於英國的諮詢公司,在 Dart 和 Flutter 方面擁有豐富的專業知識。

在接下來的幾個月裡,Invertase 將幫助我們將其餘的 Google Flutter Plugin 推向生產品質。如果您想更詳細地了解 Firebase Plugin,您可以在 FlutterFire 儲存庫 上閱讀 Invertase 的計劃。

總結

Flutter 套件管理員是一個蓬勃發展的生態系統,擁有越來越多的套件來填補 Google Flutter 團隊的開發者永遠無法自行管理的空白。幸運的是,有了 pub.dev 上的信號,包括分數、評分和 Flutter 最爱標記,以及我們與 Invertase 的合作關係,您可以放心地相信,您將擁有找到下一個 Flutter 應用程式所需正確套件的品質信號。有了 pub.dev 上套件提供的全部功能,您打算構建什麼?


Flutter 套件生態系統更新 最初發佈在 Flutter 上的 Medium,人們在那裡透過突出顯示和回應這個故事來繼續討論。