firebase 没有为类“Iterable”定义运算符“[]”< dynamic>[已关闭]

s6fujrry  于 2023-01-05  发布在  其他
关注(0)|答案(3)|浏览(151)

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
7秒前关闭。
Improve this question

我还尝试了null check和"as map"到聊天文档,但两者都不起作用

jjhzyzn0

jjhzyzn01#

在chatDocs声明行中添加.toList(),使其变为如下所示:

final chatDocs = chatSnapshot.data?.docs.toList();
um6iljoc

um6iljoc2#

.map返回一个没有[]操作符的Iterable,你可以通过调用toList()把它转换成一个列表来解决这个问题。

final chatDocs = chatSnapshot.data?.docs.map(docs).toList();

但是看起来你的map()已经错了。注意那里的错误。你真的需要Map它吗?如果不需要,那么这个应该已经工作了

final chatDocs = chatSnapshot.data?.docs;

或者实际上,如果是null,则使用此函数来处理

final chatDocs = chatSnapshot.data?.docs ?? [];
8tntrjer

8tntrjer3#

你可以用这种方法,

StreamBuilder(
          stream: _yoursteam,
          builder: ((context, AsyncSnapshot snapshot) {
            return snapshot.hasData
                ? Padding(
                    padding: const EdgeInsets.symmetric(vertical: 5),
                    child: ListView.builder(
                      itemCount: snapshot.data.docs.length,
                      itemBuilder: (context, index) {
                        return MsgTile(
                           snapshot.data.docs[index]["msgId"],
                           snapshot.data.docs[index]["time"],
                          snapshot.data.docs[index]["message"],
                          snapshot.data.docs[index]["sender"],
                          FirebaseAuth.instance.currentUser!.uid ==
                              snapshot.data.docs[index]["uid"],
                        );
                      },
                    ),
                  )
                : Container();
          }),
        );

相关问题