我有一个Firestore数据库,其中包含旅行相关的信息并存储在数据库中,我有一个预览按钮,当用户单击它时,它应该显示来自Firestore数据库的信息。我是新来的,我试着像下面这样编码,但它不显示数据,除了循环或短信。
另外,我想开发一个客户声明表单,用户将阅读政策和条件,并按约定单击复选框。请帮我解决这个问题。此外,我想开发一个客户声明表单,用户将阅读政策和条件,并按约定单击复选框。
class DataShowState extends State<DataShow> {
DataShowState();
User? user;
Widget build(BuildContext context) {
return Scaffold(
body: StreamBzuilder(
stream: FirebaseFirestore.instance
.collection('traveldetails')
.doc(user?.uid)
.collection("travels")
.snapshots(),
builder:
(BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (!snapshot.hasData) {
return Text("No Data");
// Center(
// child: CircularProgressIndicator(),
// );
}
return ListView(
children: snapshot.data!.docs.map((document) {
return Center(
child: Container(
width: MediaQuery.of(context).size.width / 1.2,
child: Column(
children: <Widget>[
Padding(
padding: EdgeInsets.only(
top: 20,
bottom: 5,
),
child: Text(document['travelname'],
style: GoogleFonts.quicksand(
fontStyle: FontStyle.normal)),
),
],
),
),
);
}).toList(),
);
}),
);
}
}
将Scaffold()
替换为Container()
,StreamBuilder
中有一个拼写错误,您需要纠正。
其余代码似乎没有问题。
如果您想在加载数据时实现CircularProgressIndicator()
,请在生成器snapshot.connectionState == ConnectionState.loading
下创建If条件并返回CircularProgressIndicator()
示例代码:
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot){
if(snapshot.connectionState == ConnectionState.loading){
return CircularProgressIndicator();
}
//... Write rest of your if statements as it is.
}
这个应该能起作用。请分享您呼叫DataShow()
的文件声音