实施 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-app
、firebase-auth
和 firebase-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
、<script src="https://www.gstatic.com/firebasejs/7.17.1/firebase-auth.js"></script>
试过了,但网站仍然无法加载。我什至可以从 pubspec.yaml 中删除 firestore,但它仍然无法加载。所以我想问题必须在身份验证过程中的某个地方。但是当我完全删除 firebase 时,一切正常以上是关于实施 Firestore 时,Flutter Web 应用程序不会加载的主要内容,如果未能解决你的问题,请参考以下文章
可以从 Firestore 快照 Flutter 中获取元数据吗?
在 Dart / Flutter 的 Firestore 查询中添加限制时,不会调用 Stream Listen
Flutter cloud_firestore(0.9.0) 包在打开应用时崩溃
Flutter/Firestore:如何在滚动时将项目添加到流中(完成获取时保留滚动位置)?