gpt4 book ai didi

android - Flutter - ListView 是否可以包含静态小部件和流

转载 作者:IT王子 更新时间:2023-10-29 06:51:32 26 4
gpt4 key购买 nike

目前我有一个 ListView,它被 StreamBuilder 扭曲,它从 firebase firestore 获取数据(例如用户列表)。这是它的样子:

Widget UsersList = new StreamBuilder(
stream: Firestore.instance
.collection('users')
.snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) return const Text("loading");
return new ListView.builder(
itemCount: snapshot.data.documents.length,
itemBuilder: (context, index) =>
_buildItem(context, snapshot.data.documents[index]),
);
}
);

问题是如何在 ListView 的顶部添加一个静态小部件(例如创建新用户的按钮),我不希望按钮一直停留在页面顶部,它应该使用 ListView 滚动。

解决方法:在 _buildItem() 函数中,如果它是第一个文档(通过传递给函数 index==0),我可以接收一个 bool 值,如果为真,则首先构建静态小部件(例如添加用户按钮) .但我能想到三个问题:

  1. 如果 firestore 集合中没有任何文档,则不会呈现静态小部件。
  2. 如果互联网连接速度较慢,则在下载第一个文档之前不会呈现静态小部件。
  3. 这是一种解决方法...

最佳答案

您可以检查 ListView.builder 中的长度,并始终为按钮添加一个项目。

Widget UsersList = new StreamBuilder(
stream: Firestore.instance.collection('users').snapshots(),
builder: (context, snapshot) {
return new ListView.builder(
itemCount: (snapshot?.data?.documents?.length ?? 0) + 1,
itemBuilder: (context, index) {
if (index == 0)
return FlatButton(child: Text("Add"));
else
_buildItem(context, snapshot.data.documents[index-1]);
},
);
},
),

关于android - Flutter - ListView 是否可以包含静态小部件和流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52686163/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com