查看原文
其他

最佳阵容 | Flutter Firebase 插件更新

Flutter 谷歌开发者 2021-08-05

作者 / 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 个插件更新完毕。



迁移


迁移到新的 Core、Authentication 和 Firestore 插件很轻松,只需更新 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 开发者社区中文资源



    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存