【问题标题】:How to display a list of data from a map ? - flutter firestore如何显示地图中的数据列表? - 扑火炉
【发布时间】:2021-06-25 05:39:21
【问题描述】:

我正在构建一个事件管理应用程序。当用户购买票时,票的详细信息会像这样保存在数据库中。 Users -> (Current User ID) -> (map)bookedEvents -> eventId -> [event details]

当我将其中一个事件 ID 作为静态字符串提供时,我设法显示了一个特定事件的数据。

StreamBuilder(
          stream: FirebaseFirestore.instance
              .collection('users')
              .doc(_uid)
              .snapshots(),
          builder: (context, snapshot) {
            if (!snapshot.hasData) {
              return Text("Loading");
            }
            var userDocument = snapshot.data;
            return Text(
              userDocument["bookedEvents"]["KFXvCj63y7GTjQcMKfVy"]
                  ["eventName"],
              style: TextStyle(fontWeight: FontWeight.bold, fontSize: 20),
            );
          }),

但我想在列表中显示所有事件名称。我能知道怎么做吗?非常感谢。

【问题讨论】:

    标签: firebase flutter dart google-cloud-firestore snapshot


    【解决方案1】:

    你应该尝试这样的事情:

    var userDocument = snapshot.data;
    
    final List<Widget> children = [];
    
    userDocument['bookedEvents'].forEach((key, value) { 
    children.add(Text(value['eventName'])); });   
     
    return Column(children: children); // or Row(children: children); or ListView(children: children);
    

    【讨论】:

    • 感谢您的回答。我必须在 StreamBuilder 中执行此操作吗?
    • 是的!只需替换以“var userDocument = snapshot.data;”行开头直到“重新运行文本(...);”用我的代码!
    • 当我尝试在流构建器中实现此代码时,forEach 显示错误。 Function expressions can't be named. Try removing the name, or moving the function expression to a function declaration statement.
    • 我能知道如何解决这个错误吗?非常感谢您的时间和精力。
    • 对不起,我打错了:将相应的行替换为:userDocument['bookedEvents'].forEach((key, value) { children.add(Text(value['eventName'])) ; });
    猜你喜欢
    • 2019-10-07
    • 2020-10-28
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-06
    相关资源
    最近更新 更多