颤振:Firebase的数据显示问题

颤振:Firebase的数据显示问题,firebase,flutter,Firebase,Flutter,显示保存为表的Firebase数据时出现问题。 事实上,当我查询我的数据库时,它会将整个表发回给我,我以后无法迭代这些表来逐个城市显示我的数据 另一方面,当我在之后添加一个城市时,没有问题。 我被困了好几天了。谢谢你的帮助。 我加入你们讨论的两个班 Pageville班: class PageVille extends StatefulWidget { final String? titre; PageVille(this.titre); @override _PageVil

显示保存为表的Firebase数据时出现问题。 事实上,当我查询我的数据库时,它会将整个表发回给我,我以后无法迭代这些表来逐个城市显示我的数据 另一方面,当我在之后添加一个城市时,没有问题。 我被困了好几天了。谢谢你的帮助。 我加入你们讨论的两个班

Pageville班:

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']});
}
返回文本(“加载”);
});
}
}