Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 无法从cloud firestore检索多个Flatter集合_Firebase_Flutter_Google Cloud Firestore - Fatal编程技术网

Firebase 无法从cloud firestore检索多个Flatter集合

Firebase 无法从cloud firestore检索多个Flatter集合,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,我要做的是从Firestore数据库中检索2个收集文档,并将其显示到我的Flitter中。我的代码是: Future<QuerySnapshot> getData() async { var firebaseUser = await FirebaseAuth.instance.currentUser(); return await Firestore.instance .collection("user") .whe

我要做的是从Firestore数据库中检索2个收集文档,并将其显示到我的Flitter中。我的代码是:

Future<QuerySnapshot> getData() async {
    var firebaseUser = await FirebaseAuth.instance.currentUser();
    return await Firestore.instance
        .collection("user")
        .where("email", isEqualTo: firebaseUser.email)
        .getDocuments();
  }

  @override
  Widget build(BuildContext context) {
    // Build a Form widget using the _formKey created above.
    return FutureBuilder(
      future: getData(),

然后,我也要检索上述收集,但我不知道如何。。。因为在同一屏幕中,我检索“用户”集合以仅显示来自特定用户的数据,并且我还需要检索“shippingAddress”集合,因为在这样的集合中有其他数据要显示 例如,如果我检索

${snapshot.data.documents[index].data["email"]} or ${snapshot.data.documents[index].data["name"]}
我已经进入了注册表单,它可以工作,并在我的小部件中显示电子邮件或姓名,但如果我想检索,例如:

${snapshot.data.documents[index].data["alias"]}

那就是创建到“shippingAddress”集合中我无法获得它们

我已经为自己找到了解决方案。 首先,从现有用户获取数据:

final databaseReference = Firestore.instance;

  Future<QuerySnapshot> getData() async {
    var firebaseUser = await FirebaseAuth.instance.currentUser();
    return await Firestore.instance
        .collection("user")
        .where("email", isEqualTo: firebaseUser.email)
        .getDocuments();
  }

  @override
  Widget build(BuildContext context) {
    return FutureBuilder(
      future: getData(),
      builder: (context, AsyncSnapshot<QuerySnapshot> snapshot) {
        if (snapshot.connectionState == ConnectionState.done) {
          return ListView.builder(
            itemCount: snapshot.data.documents.length,
              itemBuilder: (BuildContext context, int index) {
                return Column(
                    children: <Widget>[
                    Stream(),
final databaseReference=Firestore.instance;
Future getData()异步{
var firebaseUser=等待FirebaseAuth.instance.currentUser();
return wait Firestore.instance
.收集(“用户”)
.where(“电子邮件”,isEqualTo:firebaseUser.email)
.getDocuments();
}
@凌驾
小部件构建(构建上下文){
回归未来建设者(
future:getData(),
生成器:(上下文,异步快照){
if(snapshot.connectionState==connectionState.done){
返回ListView.builder(
itemCount:snapshot.data.documents.length,
itemBuilder:(构建上下文,int索引){
返回列(
儿童:[
Stream(),
并使用其他集合调用流生成器:

lass Stream extends StatefulWidget {
  @override
  _StreamState createState() => _StreamState();
}

class _StreamState extends State<Stream> {
  @override
  Widget build(BuildContext context) {
    return StreamBuilder(
      stream: Firestore.instance.collection('shippingAddress').snapshots(),
      builder: (context, snapshot) {
        if (!snapshot.hasData)
          return Text('Loading data please Wait');
        return Column(
          children: <Widget>[
            Container(
              height: 1000,
              child: ListView.builder(
                itemCount: snapshot.data.documents.length,

lass流扩展StatefulWidget{
@凌驾
_StreamState createState()=>\u StreamState();
}
类_StreamState扩展了状态{
@凌驾
小部件构建(构建上下文){
返回流生成器(
流:Firestore.instance.collection('shippingAddress').snapshots(),
生成器:(上下文,快照){
如果(!snapshot.hasData)
返回文本(“正在加载数据,请稍候”);
返回列(
儿童:[
容器(
身高:1000,
子项:ListView.builder(
itemCount:snapshot.data.documents.length,

就这些!

我已经找到了解决办法。 首先,从现有用户获取数据:

final databaseReference = Firestore.instance;

  Future<QuerySnapshot> getData() async {
    var firebaseUser = await FirebaseAuth.instance.currentUser();
    return await Firestore.instance
        .collection("user")
        .where("email", isEqualTo: firebaseUser.email)
        .getDocuments();
  }

  @override
  Widget build(BuildContext context) {
    return FutureBuilder(
      future: getData(),
      builder: (context, AsyncSnapshot<QuerySnapshot> snapshot) {
        if (snapshot.connectionState == ConnectionState.done) {
          return ListView.builder(
            itemCount: snapshot.data.documents.length,
              itemBuilder: (BuildContext context, int index) {
                return Column(
                    children: <Widget>[
                    Stream(),
final databaseReference=Firestore.instance;
Future getData()异步{
var firebaseUser=等待FirebaseAuth.instance.currentUser();
return wait Firestore.instance
.收集(“用户”)
.where(“电子邮件”,isEqualTo:firebaseUser.email)
.getDocuments();
}
@凌驾
小部件构建(构建上下文){
回归未来建设者(
future:getData(),
生成器:(上下文,异步快照){
if(snapshot.connectionState==connectionState.done){
返回ListView.builder(
itemCount:snapshot.data.documents.length,
itemBuilder:(构建上下文,int索引){
返回列(
儿童:[
Stream(),
并使用其他集合调用流生成器:

lass Stream extends StatefulWidget {
  @override
  _StreamState createState() => _StreamState();
}

class _StreamState extends State<Stream> {
  @override
  Widget build(BuildContext context) {
    return StreamBuilder(
      stream: Firestore.instance.collection('shippingAddress').snapshots(),
      builder: (context, snapshot) {
        if (!snapshot.hasData)
          return Text('Loading data please Wait');
        return Column(
          children: <Widget>[
            Container(
              height: 1000,
              child: ListView.builder(
                itemCount: snapshot.data.documents.length,

lass流扩展StatefulWidget{
@凌驾
_StreamState createState()=>\u StreamState();
}
类_StreamState扩展了状态{
@凌驾
小部件构建(构建上下文){
返回流生成器(
流:Firestore.instance.collection('shippingAddress').snapshots(),
生成器:(上下文,快照){
如果(!snapshot.hasData)
返回文本(“正在加载数据,请稍候”);
返回列(
儿童:[
容器(
身高:1000,
子项:ListView.builder(
itemCount:snapshot.data.documents.length,

仅此而已!

您是否尝试使用一种聚合查询?您是否尝试使用一种聚合查询?