颤振:Firebase的数据显示问题
显示保存为表的Firebase数据时出现问题。 事实上,当我查询我的数据库时,它会将整个表发回给我,我以后无法迭代这些表来逐个城市显示我的数据 另一方面,当我在之后添加一个城市时,没有问题。 我被困了好几天了。谢谢你的帮助。 我加入你们讨论的两个班 Pageville班:颤振:Firebase的数据显示问题,firebase,flutter,Firebase,Flutter,显示保存为表的Firebase数据时出现问题。 事实上,当我查询我的数据库时,它会将整个表发回给我,我以后无法迭代这些表来逐个城市显示我的数据 另一方面,当我在之后添加一个城市时,没有问题。 我被困了好几天了。谢谢你的帮助。 我加入你们讨论的两个班 Pageville班: class PageVille extends StatefulWidget { final String? titre; PageVille(this.titre); @override _PageVil
class PageVille extends StatefulWidget {
final String? titre;
PageVille(this.titre);
@override
_PageVilleState createState() => _PageVilleState();
}
class _PageVilleState extends State<PageVille> {
TextEditingController citeeController = TextEditingController();
List<dynamic> citeesList = [];
@override
void initState() {
super.initState();
citeesList.add(ReadCitee(widget.titre!));
}
Future<void> displayDialog(BuildContext context) async {
return showDialog(
context: context,
builder: (context) {
return AlertDialog(
content: TextField(
controller: citeeController,
textInputAction: TextInputAction.go,
decoration:
InputDecoration(hintText: "Entrez une nouvelle citée"),
),
actions: [
TextButton(
child: Text("Ok"),
onPressed: () {
AddCitee(widget.titre!, citeeController.text);
setState(() {
citeesList.add(Text(citeeController.text));
citeeController.clear();
});
Navigator.pop(context);
}),
TextButton(
onPressed: () {
Navigator.pop(context);
citeeController.clear();
},
child: Text("Annuler"),
)
],
);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.titre!),
backgroundColor: Colors.teal,
),
body: Container(
padding: EdgeInsets.all(20.0),
child: ListView.separated(
itemBuilder: (context, index) {
return ListTile(
title: citeesList[index],
onTap: () => Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
PageCitee(citeesList[index]))),
trailing: IconButton(
icon: Icon(Icons.delete_forever),
color: Colors.red[300],
iconSize: 32,
onPressed: () {
setState(() {
citeesList.remove(citeesList[index]);
});
}));
},
separatorBuilder: (context, index) => Divider(),
itemCount: citeesList.length)),
floatingActionButton: FloatingActionButton(
onPressed: () => displayDialog(context),
child: Icon(Icons.add),
backgroundColor: Colors.teal[300],
),
);
}
}
类PageVille扩展StatefulWidget{
最后一串?滴度;
佩杰维尔(这是乳头);
@凌驾
_PageVilleState createState()=>\u PageVilleState();
}
类(扩展状态){
TextEditingController-citeeController=TextEditingController();
列表城市列表=[];
@凌驾
void initState(){
super.initState();
添加(ReadCitee(widget.titre!);
}
未来显示对话框(BuildContext上下文)异步{
返回显示对话框(
上下文:上下文,
生成器:(上下文){
返回警报对话框(
内容:TextField(
控制员:城市控制员,
textInputAction:textInputAction.go,
装饰:
输入装饰(hintText:“新城市中心”),
),
行动:[
文本按钮(
孩子:文本(“Ok”),
已按下:(){
AddCitee(widget.titre!,citeeController.text);
设置状态(){
添加(文本(citeeController.Text));
citeeController.clear();
});
Navigator.pop(上下文);
}),
文本按钮(
已按下:(){
Navigator.pop(上下文);
citeeController.clear();
},
子项:文本(“废除者”),
)
],
);
});
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(widget.titre!),
背景颜色:Colors.teal,
),
主体:容器(
填充:所有边缘设置(20.0),
子项:ListView.separated(
itemBuilder:(上下文,索引){
返回列表块(
标题:城市名单[索引],
onTap:()=>Navigator.push(
上下文
材料路线(
生成器:(上下文)=>
第页(城市列表[索引]),
尾随:图标按钮(
图标:图标(图标。永远删除),
颜色:颜色。红色[300],
iconSize:32,
已按下:(){
设置状态(){
citeesList.remove(citeesList[index]);
});
}));
},
separatorBuilder:(上下文,索引)=>Divider(),
itemCount:citeesList.length),
浮动操作按钮:浮动操作按钮(
按下:()=>displayDialog(上下文),
子:图标(Icons.add),
背景颜色:Colors.teal[300],
),
);
}
}
类别读者:
class ReadCitee extends StatelessWidget {
final String docCityId;
ReadCitee(this.docCityId);
@override
Widget build(BuildContext context) {
CollectionReference cities = FirebaseFirestore.instance.collection('city');
return FutureBuilder<DocumentSnapshot>(
future: cities.doc(docCityId).get(),
builder: (context, AsyncSnapshot<DocumentSnapshot> snapshot) {
if (snapshot.hasError) {
return Text("Something went wrong");
}
if (snapshot.hasData && !snapshot.data!.exists) {
return Text("Documents does not exist");
}
if (snapshot.connectionState == ConnectionState.done) {
var data = snapshot.data!.data() as Map<String, dynamic>;
return Text("${data['Nom']}");
}
return Text("Loading");
});
}
}
类ReadCitee扩展了无状态小部件{
最终字符串docCityId;
读者(this.docCityId);
@凌驾
小部件构建(构建上下文){
CollectionReference cities=FirebaseFirestore.instance.collection('city');
回归未来建设者(
future:cities.doc(docCityId.get(),
生成器:(上下文,异步快照){
if(snapshot.hasError){
返回文本(“出错”);
}
如果(snapshot.hasData&!snapshot.data!。存在){
返回文本(“文件不存在”);
}
if(snapshot.connectionState==connectionState.done){
var data=snapshot.data!.data()作为映射;
返回文本(${data['Nom']});
}
返回文本(“加载”);
});
}
}