最佳陣容 | Flutter Firebase 插件更新

作者 / Chris Sells, Flutter 開發者體驗產品經理

Flutter 不僅是一個引擎、一套 widget 和一些工具,它還包括一個龐大的 package 生態系統,讓應用得以實現遠多於開箱即用的那些功能。在這個生態系統裏,一組支持 Firebase 的 package 人氣頗高,即 FlutterFire。

爲了全面提升 Flutter 質量,在最近的進展更新中,我們宣佈 Dart、Flutter 和 Firebase 領域的資深諮詢公司 Invertase 將接手 FlutterFire 插件的大部分開發和維護。宣佈後不久,Invertase 已經取得了巨大進展,包括新的 Core、Authentication 和 Firestore 插件。這些插件提供了新的功能,並使 API 與其他平臺的 Firebase SDK 更加一致。此外,Invertase 還創建了一個完整的 Flutter 專用文檔網站,爲每個 Firebase 插件提供安裝說明和常見場景的代碼片段,以及幫助大家將代碼移至新版本的遷移指南。最後,除了以上出色成果,此版本還解決了 300 多個 issue,合併了 80 多個 pull request。

開發原則

一直以來,Flutter 的 Firebase 插件是由熱情的團隊成員們 (在力所能及的範圍內) 自發打造和維護的。隨着插件方面的開發工作移交至 Invertase,我們也藉此機會和 Invertase 團隊共同重新審視了基礎內容,得以催生出以下開發原則:

  • 插件的功能將與原生 Firebase SDK 一致,例如以同步方式而非異步方式訪問當前登錄的用戶

  • 命名將與原生 Firebase SDK 一致,比如使用 get() 而非 getDocuments();

  • 所有插件都將依賴於 firebase_core,並始終要求進行初始化 (使用 Firebase.initializeApp() );

  • 所有插件都將依賴於相同的底層原生 Firebase SDK 版本;

  • 所有插件都將更新爲使用聯合 (federation) 插件的方式開發,從而支持更多樣的平臺,而不僅僅是移動平臺;

  • 所有插件都將需要顯式採用新 firebase_core 版本,使得運行 flutter pub update 不會破壞代碼;

  • 舊名稱將被棄用,以方便採用,因爲插件已基於這些原則進行更新;

  • 解決重要 issue,並在更新每套插件時爲其創建全套測試

  • 聯合插件

    https://flutter.cn/docs/development/packages-and-plugins/developing-packages#federated-plugins

這些開發原則的目的是爲 Flutter 上的新老 Firebase 用戶提供更好的體驗。我們也在努力確保您能在每套發佈 3-4 個插件更新時及時跟進,而不必等待整套 15 個插件更新完畢。

遷移

遷移到新的 CoreAuthenticationFirestore 插件很輕鬆,只需更新 pubspec.yaml 文件中的版本,用 flutter pub get 獲取這些版本,然後添加對 Firebase.initializeApp() 的調用即可。遷移完成後,儘管舊的方法和屬性仍可以繼續使用,但您也可以選擇處理已被棄用的名稱。

  • Core

    https://firebase.flutter.dev/docs/core/usage

  • Authentication

    https://firebase.flutter.dev/docs/auth/overview

  • Firestore

    https://firebase.flutter.dev/docs/firestore/overview

  • Firebase.initializeApp()

    https://firebase.flutter.dev/docs/overview#initializing-flutterfire

前文所述的這些原則相關的工作還在進行中,但如果您採用了新的 Core,依然可以繼續使用其餘無重大變更的插件;Storage 和 Messaging 之類的插件也已經更新爲依賴於新的 Core。這意味着您現在將獲得更一致的體驗,並準備迎接即將到來的更多、更好的變化。

有關新版本 Core、Authentication 和 Firestore 的完整變更列表,以及如何升級 Firebase 代碼的詳細說明,請閱讀遷移指南

  • 遷移指南

    https://firebase.flutter.dev/docs/migration

平臺支持

Invertase 當前的工作重心是 Android 和 iOS,同時包括了與 iOS 共享 99% 的代碼的 macOS。您可以在全新的 FlutterFire 文檔網站查看 Firebase 插件的支持信息。

  • FlutterFire 文檔網站

    https://firebase.flutter.dev/

△ Flutter Firebase 插件的當前狀態

儘管每個 Firebase 插件都支持 Android 和 iOS,但並非所有插件都支持 macOS。隨着清單中後續工作的開展,我們將逐步提供支持。一些 Flutter 插件也已經同時支持移動端和 web 端。隨着工作的繼續,支持範圍將不斷擴大。

文檔

除了提供全面的遷移指南和展示每個插件的平臺支持情況外,我們還提供了 Flutter 專用文檔的初稿。

  • Flutter 專用文檔

    https://firebase.flutter.dev/docs

您無需再閱讀原生的 Android 或 web 版 Firebase 文檔,不必再猜測 Flutter 應用中要使用的等效 API 了!全新的文檔網站上包含大多數 Firebase 插件 (不僅僅是 Core、Authentication 和 Firestore) 的相關文檔以及 Android、iOS 和 web 端的安裝說明、常見場景的概覽與代碼片段以及視頻供您使用參考。

未來計劃

我們也發佈了第一輪更新,包括 Core、Authentication 和 Firestore 插件。爲 Flutter 開發者提供最佳的插件陣容,在下一輪的更新中應該會包含 Crashlytics、Functions、Messaging 和 Storage。這些插件更新完畢後,我們會回顧以確保這 7 個插件在 web 端也符合我們的設計原則。這是確保 Flutter 開發者享有其他平臺的 Firebase SDK 提供的全方位服務的第一大步。如果您對這方面的工作有任何意見或者建議,請反饋給我們。也歡迎您在微信留言區參與討論!

  • 提交 issue

    https://github.com/firebaseextended/flutterfire/issues


推薦閱讀




 點擊屏末  | 訪問 Flutter 開發者社區中文資源