实施 Firestore 时,Flutter Web 应用程序不会加载

Posted

技术标签:

【中文标题】实施 Firestore 时,Flutter Web 应用程序不会加载【英文标题】:Flutter web app wont load when firestore is implemented 【发布时间】:2020-11-22 03:51:13 【问题描述】:

我试图将云火库添加到我的应用程序中。一切都很好,但是当我尝试添加 firestore 时,应用程序不会加载。它只是卡在这里并显示白屏:

[0]: Web Server (web-server)
[1]: Chrome (chrome)
[2]: Edge (edge)
Please choose one: [0|1|2]: 1
Launching lib\main.dart on Chrome in debug mode...
Syncing files to device Chrome...                                       
13.642ms (!)

是的,我在 firebase 上注册了应用程序,是的,我更改了 index.html

<script src="https://www.gstatic.com/firebasejs/7.17.1/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.17.1/firebase-auth.js"></script>

<!-- TODO: Add SDKs for Firebase products that you want to use
     https://firebase.google.com/docs/web/setup#available-libraries -->
<script src="https://www.gstatic.com/firebasejs/7.17.1/firebase-analytics.js"></script>

<script>
  // Your web app's Firebase configuration
  var firebaseConfig = 
    apiKey: "//CENSORED//",
    authDomain: "//CENSORED//",
    databaseURL: "//CENSORED//",
    projectId: "//CENSORED//",
    storageBucket: "//CENSORED//",
    messagingSenderId: "//CENSORED//",
    appId: "//CENSORED//:web://CENSORED//",
    measurementId: "//CENSORED//"
  ;

然后我将所有内容都添加到了 pubspec.yaml:

dependencies:
  flutter:
    sdk: flutter

  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for ios style icons.
  cupertino_icons: ^0.1.3
  cloud_firestore: ^0.13.7
  firebase_core: ^0.4.5
  syncfusion_flutter_datepicker: ^18.2.47-beta
  firebase_auth_web: ^0.1.3+1
  firebase_auth: ^0.16.1

没有错误抛出它只是不加载。

【问题讨论】:

您忘记添加firebase_core 已经尝试过了,但是我得到了这个错误:[project] flutter pub get Running "flutter pub get" in project... Because project depends on firebase_core ^0.15.2 which doesn't match any versions, version solving failed. pub get failed (1; Because project depends on firebase_core ^0.15.2 which doesn't match any versions, version solving failed.) exit code 1 firebase_core 没有 0.15.2 版本 但是我应该使用什么版本呢?我使用 0.15.2 是因为我在这里找到了它:pub.dev/packages/firebase_auth_web“这个包是自 0.15.2 版以来为 web 平台认可的 firebase_auth 实现,因此它会根据 firebase_core 自动添加到您的依赖项中:^0.15.2 。” nvm 在 pub.dev 上自己找到了正确的版本。但我认为他们必须用 firebase_core: ^0.4.5 替换 0.15.2 对吗? 【参考方案1】:

我认为问题在于,即使您添加了 cloud_firestore 依赖项,您也没有在 index.html 中包含它的 js cdn。

即您已包含 firebase-appfirebase-authfirebase-analytics。所以同理需要添加firebase-firestore的cdn文件才能使用。

我认为您不需要 firebase-core dart 包。我的许多项目都使用了 firebase,没有 firebase-core 包一切正常。

【讨论】:

感谢您的帮助,但正如我在帖子中所说,我将其 js cdn 包含在 index.html 中。我后来也手动添加了 firebase_auth_web 但它仍然无法正常工作。同样根据包pub.dev/packages/firebase_auth_web,当我添加firebase_core时它应该会自动添加。 嗯,你是对的。只是一个问题,你想使用firestore那你为什么提到firebase_auth?您在问题中提供的index.html 的代码不包括firebase-firestore 的cdn。 将此添加到您的index.html&lt;script src="https://www.gstatic.com/firebasejs/7.17.1/firebase-auth.js"&gt;&lt;/script&gt; 试过了,但网站仍然无法加载。我什至可以从 pubspec.yaml 中删除 firestore,但它仍然无法加载。所以我想问题必须在身份验证过程中的某个地方。但是当我完全删除 firebase 时,一切正常

以上是关于实施 Firestore 时,Flutter Web 应用程序不会加载的主要内容,如果未能解决你的问题,请参考以下文章

可以从 Firestore 快照 Flutter 中获取元数据吗?

在 Dart / Flutter 的 Firestore 查询中添加限制时,不会调用 Stream Listen

Flutter cloud_firestore(0.9.0) 包在打开应用时崩溃

Flutter/Firestore:如何在滚动时将项目添加到流中(完成获取时保留滚动位置)?

从 StreamBuilder BloC firestore Flutter 获取数据时出错

添加依赖项 cloud_firestore 时,新的 Flutter 应用程序失败:^1.0.7