Zvi*_*arp 3 android listview flutter google-cloud-firestore flutter-layout
目前我有一个由 StreamBuilder 扭曲的 ListView,它从 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]),
);
}
);
Run Code Online (Sandbox Code Playgroud)
问题是如何在 ListView 顶部添加一个静态小部件(例如创建新用户的按钮),我不希望该按钮一直停留在页面顶部,它应该随着列表显示。
解决方法:在 _buildItem() 函数中,如果它是第一个文档(通过传递给函数 index==0),我可以接收一个布尔值,如果为 true,则首先构建静态小部件(例如添加用户按钮)。但我能想到三个问题:
您可以检查里面的长度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]);
},
);
},
),
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2341 次 |
| 最近记录: |