【问题标题】:Flutter: How to get children of items in Firestore databaseFlutter:如何在 Firestore 数据库中获取项目的子项
【发布时间】:2020-08-24 12:58:37
【问题描述】:

您好,我有一个 Firestore 数据库,如下所示:

我正在尝试让数据循环遍历每个聊天,并将数据添加到可见性仪表板小部件中,作为聊天的名称和发送的最后一条消息,以便应用程序看起来像这样。

这是我尝试过的代码,我已经查看了如何执行此操作,但我只能在 Java 中找到解决方案。

StreamBuilder<QuerySnapshot>(
          stream: _firestore.collection('dashboard').snapshots(),
          builder: (context, snapshot){
            if(!snapshot.hasData){

            }else{
              final dashboards = snapshot.data.documents;
              List<Dashboard> dashboardList = [];
              for (var dashboard in dashboards){

                final String nameOfChat = dashboard.data['chats']['nameOfChat'];
                final String lastMessageSent = dashboard.data['chats']['lastMessageSent'];

                final String username = dashboard.data['displayDashboardTo'];
                final String displayDashboardToUID = dashboard.data['uid'];

                dashboardCard = Dashboard(
                  nameOfChat: nameOfChat,
                  lastMessageSent: lastMessageSent,
                  displayDashboardTo: username,
                );

                dashboardList.add(dashboardCard);

              }

              return Visibility(
                visible: true, 
                child: Expanded(
                  child: ListView(
                    children: dashboardList,
                  ),
                ),
              );
            }
          }
        ),

谢谢。

【问题讨论】:

    标签: firebase flutter dart google-cloud-firestore


    【解决方案1】:

    由于“聊天”字段是一个数组,因此您必须遍历它。

    final dashboards = snapshot.data.documents;
    List<Dashboard> dashboardList = [];
    for (var dashboard in dashboards){
    final Map data = dashboard.data;
    
    var chats = data['chats'];
    
    for(var chat in chats) {
      final String nameOfChat = chat['nameOfChat'];
      final String lastMessageSent = chat['lastMessageSent'];
      final String username = chat['displayDashboardTo'];
      final String displayDashboardToUID = chat['uid'];
    
      dashboardCard = Dashboard(
       nameOfChat: nameOfChat,
       lastMessageSent: lastMessageSent,
       displayDashboardTo: username,
     );
    
    dashboardList.add(dashboardCard);
    
    });
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-02
      • 2018-12-20
      • 1970-01-01
      相关资源
      最近更新 更多