【发布时间】:2020-03-27 09:14:00
【问题描述】:
我看到几个关于 Flutter for mobile 的问题和答案,它们使用如下流构建器:
body: new StreamBuilder(
stream: Firestore.instance.collection("collection").snapshots(),
builder: (context, snapshot) {
...
我正在尝试在 web 上的 Flutter 上做同样的事情,但在我的配置中,snapshots() 方法是未知的,在运行时会产生异常(并事先发出 vscode 警告)。为什么?我的设置不正确吗?
我已经按照我在这里和其他地方找到的这些步骤进行操作:
1) 在 pubspec.yaml 中包含 firebase 作为依赖项
dependencies:
flutter:
sdk: flutter
firebase: ^6.0.0
2) 在 index.html 正文标签中包含 firestore js 脚本:
<script src="https://www.gstatic.com/firebasejs/7.5.0/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.5.0/firebase-analytics.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.5.0/firebase-firestore.js"></script>
<script src="main.dart.js" type="application/javascript"></script>
3) 在 main.dart 中,导入 firebase.dart 文件(使用给出的建议 here,尽管我不确定上面的哪个步骤让我可以访问这个包。如果不是的话,我是一个颤抖的 nube '不明显)
import 'package:flutter/material.dart';
import 'package:firebase/firebase.dart' as fb;
import 'package:firebase/firestore.dart' as fs;
按照这些步骤,我可以让这段代码工作......
void main() {
if (fb.apps.length == 0) {
try {
fb.initializeApp(
apiKey: "mike",
authDomain: "myauthdomain",
databaseURL: "mydburl",
projectId: "myproductid",
storageBucket: "mystoragebucket",
);
} catch(e) {
print(e);
}
}
fs.Firestore store = fb.firestore();
fs.CollectionReference ref = store.collection("MyCollection");
ref.onSnapshot.listen((querySnapshot) {
querySnapshot.docs.forEach((doc) {
print(doc.data()); // this works!!
});
});
runApp(MyApp());
}
但是,正如我之前提到的,让流构建器工作,所有建议都表明我可以通过说...来获取快照流...
class MyList extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new StreamBuilder(
stream: fb.firestore().collection('MyCollection').snapshots(),
...
我在 web 上运行的包似乎没有任何类似于 firestore 集合引用上的 snapshots 方法(或属性)的东西。有人能直截了当吗?
【问题讨论】:
标签: firebase flutter google-cloud-firestore flutter-web