flutter - 在 FutureBuilder 中访问多个 future 的结果

标签 flutter dart future builder

我是 Flutter 的新手,需要帮助。

我正在运行 Future Builder 中的 futures,然后尝试访问文档。不幸的是,我在下面收到错误、代码和错误。如何访问两个不同的文档快照?我 future 的方法应该返回一些东西吗?有一个更好的方法吗?

错误在这里:

snapshot.data[1].data[index].data["fname"]

代码:

class PostsWidget extends StatefulWidget {

@override
  _PostsWidgetState createState() => _PostsWidgetState();
}

class _PostsWidgetState extends State<PostsWidget> {
  Future getPosts() async {
    var firestore = Firestore.instance;
    QuerySnapshot qn = await firestore.collection("posts").getDocuments();
    return qn.documents;
  }

  Future getUsers() async {
    var firestore = Firestore.instance;
    QuerySnapshot qn = await firestore.collection("users").getDocuments();
    return qn.documents;
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      child: FutureBuilder(
        future: Future.wait([getPosts(), getUsers()]),
        builder: (_, snapshot) {
          switch (snapshot.connectionState) {
            case ConnectionState.waiting:
              return Center(child: CircularProgressIndicator());
            default:
              return ListView.builder(
                itemCount: snapshot.data[0].length,
                itemBuilder: (_, index) {
                  return Card(
                      child: Column(
                    children: <Widget>[
                      Container(
                        color: Color(0xff707070),
                        child: Padding(
                          padding: const EdgeInsets.all(4.0),
                          child: Row(
                            mainAxisAlignment: MainAxisAlignment.spaceBetween,
                            children: <Widget>[
                              Padding(
                                padding: const EdgeInsets.all(4.0),
                                child: Text(
                                  snapshot.data[1].data[index].data["fname"],
                                  style: TextStyle(color: Colors.white),
                                ),
                              ),
                              Padding(
                                padding: const EdgeInsets.all(4.0),
                                child: Icon(
                                  Icons.info,
                                  color: Colors.white,
                                ),
                              ),
                            ],
                          ),
                        ),
                      )
                    ],
                  ));
                },
              );
          }
        },
      ),
    );
  }
}

日志/错误:

Class 'List<DocumentSnapshot>' has no instance getter 'data'.
Receiver: Instance(length:1) of '_GrowableList'
Tried calling: data

最佳答案

snapshot.data[1].data[index].data["fname"]

这一行应该是:

snapshot.data[1][index].fname

其中 fname 是您正在访问的对象的属性。

关于flutter - 在 FutureBuilder 中访问多个 future 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62024859/

相关文章:

animation - 如何在 Flutter 中的 Hero 过渡期间使用未运行的动画/动画?

android - Flutter- "extendBody: true"完全没有任何作用。我想扩展导航栏后面的主体

multithreading - 为什么这不编译? (RValue 作为线程 CTOR 参数)

Scala - 元组上的 Future.sequence

firebase - 从 firebase 中的数组中删除特定的 map /对象

list - 将 Map<key, value> 转换为 List<value>

dart - 文本不会在行中溢出

rust - 将数据附加到 Actix-web 中的代理响应

flutter - 将图像添加到 RichText 元素

flutter - dart - 如何解决 'The argument type ' Null' can't be assigned to the parameter type 'MyUser' .'