【问题标题】:How to add a list to a Map<DateTime, List<dynamic>> dynamically如何动态地将列表添加到 Map<DateTime, List<dynamic>>
【发布时间】:2021-04-07 05:08:24
【问题描述】:

我正在从保存在列表中的 firebase 获取我的文档。目前我在列表中有这个内容:

[{date: 02/02/2019, name: John}, {date: 03/03/2020, name: Louise}]

然后,在以下方法中,我将此列表转换为具有我想要的格式的地图。

Map formatMap(list){
    if(list.length > 1){
      for(int i = 0; i < list.length; i ++){
        dateFormatted = _formatDate(list[i]['date']);
        print(dateFormatted);
        if(i == 0){
          myMap[dateFormatted] = [];
        }
        myMap[dateFormatted].add({'date': list[i]['date'], 'name': events[i]['name']});
      }
    }else{
      dateFormatted = _formatDate(list['date']);
      myMap[dateFormatted] = [{'date': list['date'], 'name': list['name']}];
    }
    return myMap;
  }

我这样做是因为我的预期结果是:

{2020-12-31 12:00:00.000Z: [{date: 02/02/2019, name: John}, {date: 03/03/2020, name: Louise}]}

但运行该方法返回的是:

[ERROR:flutter/lib/ui/ui_dart_state.cc(177)] 未处理的异常:NoSuchMethodError:方法 '[]=' 在 null 上调用。 E/颤振(17862):接收器:空 E/flutter (17862):尝试调用:[]=('DateTime' 的实例,'_GrowableList' 的实例(length:0))

我做错了什么?我如何才能达到预期的效果?

【问题讨论】:

    标签: list firebase flutter dart


    【解决方案1】:

    我猜你忘记初始化地图了:

    myMap = {};
    

    【讨论】:

    • 如果_formatDate(list[i]['date']) 返回不同的值,if(i == 0){ myMap[dateFormatted] = [];} 似乎也会导致The method 'add' was called on null
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    • 2021-08-22
    • 2021-03-25
    • 2020-05-02
    • 2021-09-19
    • 1970-01-01
    相关资源
    最近更新 更多