flutter - 如何从 Firebase 获取数据并在网格视图中显示它们?
问题描述
我在 firebase 实时数据库中有一些数据。我想在 gridview 中显示它们,如果我单击任何项目,它将带我另一页。我该怎么做?
我正在执行此代码来打印我的数据值:
void printFirebase(){
dbRef.once().then((DataSnapshot snapshot) {
print('pets : ${snapshot.value}');
});
}
Column(
children: <Widget> [
ElevatedButton(onPressed: printFirebase,
child: Text('click'),
)
],
),
解决方案
您可以使用 StreamBuilder 并通过流返回带有子项的 GridView
StreamBuilder(
stream: firebaseFirestore
.collection(widget.sportName)
.snapshots(),
builder: (BuildContext context,
AsyncSnapshot<QuerySnapshot> snapshot) {
if (!snapshot.hasData) {
return Center(
child: CircularProgressIndicator(),
);
}
return GridView.count(
shrinkWrap: true,
physics: ClampingScrollPhysics(),
crossAxisCount: 5,
mainAxisSpacing: 10.0,
childAspectRatio: 1,
crossAxisSpacing: 10.0,
children: snapshot.data!.docs.map((document) {
return GestureDetector(
child:
dateSelector(document['date'], document.id),
);
}).toList(),
);
},
),
推荐阅读
- javascript - 为什么 create-react-app 使用 Dashjs 的调试版本构建我的应用程序?
- hyperledger-fabric - Chaincode 已安装、批准、提交,但仍无法调用
- css - 如何创建像 CleanMyMac X 这样的 UI?
- javascript - 我的 node js 项目有问题,我的服务器不会响应并且会报错
- r - 如何使用 R 计算每种流派的电影数量?
- ios - 在Objective C中推送segue时出现无法识别的选择器错误
- regex - 正则表达式匹配以预定义字符开头和结尾的字符串的首次出现
- c++ - 如何使我的代码重复而不是以 c++ 结尾?
- avfoundation - AVFoundation 使用蓝牙耳机录制视频
- wget - 使用“wget”递归下载站点遇到错误