StreamBuilder(
stream: users.where("invites", arrayContains: uid).snapshots(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.hasData) {
_items = snapshot.data!.docs;
return AnimatedList(
key: listKey,
initialItemCount: _items.length,
itemBuilder: (context, index, animation) {
return _buildItem(index, _items[index], animation);
},
);
} else {
return Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: const [
Center(
child: SizedBox(
height: 50,
width: 50,
child: CupertinoActivityIndicator()),
),
],
);
}
},
)
我用FirebaseFirestore的流得到了这个StreamBuilder。例如,我在Firebase中有3个条目符合我的条件(保存在_items中(。到目前为止,一切都很好。但如果我删除其中一个,流会刷新,但列表会抛出错误:RangeError(index(:无效值:不在包含0的范围内。.1:2另一种方式解决同样的问题:只显示了两个,第三个没有显示。有人知道为什么或如何解决这个问题吗。谢谢:(
这不适用于动画列表,因为您的索引正在减少。你需要建立一个新的动画列表,否则我建议使用普通的列表视图。