升级到 Flutter 2.0 会破坏 Flutter Firebase Web 项目

Posted

技术标签:

【中文标题】升级到 Flutter 2.0 会破坏 Flutter Firebase Web 项目【英文标题】:Upgrading to Flutter 2.0 breaks flutter firebase web project 【发布时间】:2021-06-07 05:10:33 【问题描述】:

我有一个完整的工作项目并将 Flutter 更新到 2.0,并将完整的项目更新为 null 安全。

现在从 firebase 获取数据的第一步也是基本的步骤不适用于网络。

@override
void initState() 
super.initState();
appState = AppState.loading;
loadData();


void loadData() async 
QuerySnapshot val = await FirebaseFirestore.instance
    .collection(FirestoreFields.APPDATA_COLLECTION)
    .get();
setState(() 
  if (val.docs.length == 0)
    appState = AppState.databaseSetupPending;
  else
    appState = AppState.databaseDownloading;
);

这段代码在 Flutter for web 上给了我以下错误。

Error: [cloud_firestore/unknown] Expected a value of type '((Object?) => Object)?', but got one of type '(Object) => Object?'
    at Object.throw_ [as throw] (http://localhost:60662/dart_sdk.js:5032:11)
    at collection_reference_web.CollectionReferenceWeb.new.get (http://localhost:60662/packages/cloud_firestore_web/src/write_batch_web.dart.lib.js:370:23)
    at get.next (<anonymous>)
    at http://localhost:60662/dart_sdk.js:37210:33
    at _RootZone.runUnary (http://localhost:60662/dart_sdk.js:37081:59)
    at _FutureListener.thenAwait.handleValue (http://localhost:60662/dart_sdk.js:32337:29)
    at handleValueCallback (http://localhost:60662/dart_sdk.js:32864:49)
    at Function._propagateToListeners (http://localhost:60662/dart_sdk.js:32902:17)
    at _Future.new.[_completeWithValue] (http://localhost:60662/dart_sdk.js:32750:23)
    at async._AsyncCallbackEntry.new.callback (http://localhost:60662/dart_sdk.js:32771:35)
    at Object._microtaskLoop (http://localhost:60662/dart_sdk.js:37333:13)
    at _startMicrotaskLoop (http://localhost:60662/dart_sdk.js:37339:13)
    at http://localhost:60662/dart_sdk.js:33110:9

但同样的项目在我的安卓设备上运行完美。

我所有其他不使用 firebase 的项目在更新并使其为 null 安全后也可以在网络上完美运行。

这是我的 index.html 文件:

https://developers.google.com/web/fundamentals/primers/service-workers -->
  <script src="https://www.gstatic.com/firebasejs/8.2.10/firebase-app.js"></script>
  <script src="https://www.gstatic.com/firebasejs/8.2.10/firebase-auth.js"></script>
  <script src="https://www.gstatic.com/firebasejs/8.2.10/firebase-firestore.js"></script>
  <script>
    // Your web app's Firebase configuration
    // For Firebase JS SDK v7.20.0 and later, measurementId is optional
    var firebaseConfig = 
      apiKey: "*******************************",
      authDomain: "*******************************",
      projectId: "*******************************",
      storageBucket: "*******************************",
      messagingSenderId: "*******************************",
      appId: "**************************************************************",
      measurementId: "*******************************"
    ;
    // Initialize Firebase
    firebase.initializeApp(firebaseConfig);
  </script>

【问题讨论】:

您好,我建议您查看以下链接Migration Guide,它将帮助您检查您是否升级到了最新推荐的稳定版本。检查这一点很重要,因为通常您必须等待使用某个新版本,因为它可能有某些需要修复的东西。如果检查后仍有问题,请告诉我。 【参考方案1】:

这可能会有所帮助

要查看可用更改的完整列表,请运行以下命令:

dart fix --dry-run

要批量应用所有更改,请运行以下命令:

dart fix --apply

查看文档https://flutter.dev/docs/development/tools/flutter-fix

【讨论】:

dart fix --dry-run 和 dart fix --apply 给出相同的信息。 “没有什么可修复的!”

以上是关于升级到 Flutter 2.0 会破坏 Flutter Firebase Web 项目的主要内容,如果未能解决你的问题,请参考以下文章

Flutter升级到2.0后出现的问题

Flutter升级到2.0后出现的问题

升级到最新版本后出现颤振错误

flutter项目升级2.0过程填坑记录

Flutter状态管理之Riverpod 2.0

Flutter状态管理之Riverpod 2.0