Android 如何在颤振中对现有阵列进行排序和制作阵列?

Android 如何在颤振中对现有阵列进行排序和制作阵列?,android,node.js,flutter,Android,Node.js,Flutter,大家晚上好 我正在开发调度程序应用程序。它与后端(NodeJS+PSQL)集成,问题是当我从数据库中获取所有计划时,我将其作为: [ {"schedule_id":6229,"group_id":2,"subject_id":37,"start_time":"2020-07-27 08:50","end_time":"2020-07-29 09:30",&q

大家晚上好

我正在开发调度程序应用程序。它与后端(NodeJS+PSQL)集成,问题是当我从数据库中获取所有计划时,我将其作为:

[
{"schedule_id":6229,"group_id":2,"subject_id":37,"start_time":"2020-07-27 08:50","end_time":"2020-07-29 09:30","room":"24","subject_color":"#F44336","subject_title":"Rus Tili 8","teacher_id":21,"teacher_name":"Moxizar","teacher_lastname":"Baxtiyarovna","teacher_email":"brownn0910@gmail.com","teacher_password":"$2a$10$Dt8EsXu6lBD5yIK9FMYhYeZKw8LOJlaGP0RUSW4LzhtlxHlnXqXwO","teacher_phone":"+000000000","teacher_address":"Navoi 12"},
{"schedule_id":6228,"group_id":2,"subject_id":37,"start_time":"2020-07-20 08:50","end_time":"2020-07-22 09:30","room":"24","subject_color":"#F44336","subject_title":"Rus Tili 8","teacher_id":21,"teacher_name":"Moxizar","teacher_lastname":"Baxtiyarovna","teacher_email":"brownn0910@gmail.com","teacher_password":"$2a$10$Dt8EsXu6lBD5yIK9FMYhYeZKw8LOJlaGP0RUSW4LzhtlxHlnXqXwO","teacher_phone":"+000000000","teacher_address":"Navoi 12"},
{"schedule_id":6227,"group_id":2,"subject_id":37,"start_time":"2020-07-13 08:50","end_time":"2020-07-15 09:30","room":"24","subject_color":"#F44336","
这里是颤振日历要求它像
Map
,但不幸的是,在我的例子中,正如您所提到的,我的
start\u time
有相似之处

那么,有没有什么方法可以检查类似的
DateTime
是否会从给定的DateTime创建映射,并找到该DateTime中的所有事件,并从中生成
列表

我的意思是,我怎么能从我的回答中得出这样的结论:

Map<DateTime, List<String>> = {
 2020-09-09 : ["Event A", "Event B"],
 2020-09-10 : ["Event A", "Event B"],
}
哪些产出:

I/flutter (11927): 2020-07-27 00:00:00.000 : Rus Tili 8
I/flutter (11927): 2020-07-20 00:00:00.000 : Rus Tili 8
I/flutter (11927): 2020-07-13 00:00:00.000 : Rus Tili 8
I/flutter (11927): 2020-07-06 00:00:00.000 : Rus Tili 8
I/flutter (11927): 2020-07-27 00:00:00.000 : Matem 6
I/flutter (11927): 2020-07-20 00:00:00.000 : Matem 6
I/flutter (11927): 2020-07-13 00:00:00.000 : Matem 6
I/flutter (11927): 2020-07-06 00:00:00.000 : Matem 6

但我日历上的结果是:


I/flutter (11927): 2020-07-27 00:00:00.000 : Matem 6
I/flutter (11927): 2020-07-20 00:00:00.000 : Matem 6
I/flutter (11927): 2020-07-13 00:00:00.000 : Matem 6
I/flutter (11927): 2020-07-06 00:00:00.000 : Matem 6

日历似乎覆盖了相似的日期,而不是将它们组合起来,不会自动创建并添加到列表中。在将某个内容分配给重复键时,它会覆盖其中的内容

要执行您想要的操作,只需检查您尝试分配的密钥是否已经有
列表
。如果要分配的密钥已附加值,
添加到
列表中,而不是重新分配

例如:

widget.schedule.forEach((element) {
    String date = element['start_time'].split(' ')[0];
    int y = int.parse(date.split('-')[0]);
    int m = int.parse(date.split('-')[1]);
    int d = int.parse(date.split('-')[2]);

    var ev = {
       "title": element['subject_title'],
       'room': element['room'],
       'start_time': element['start_time'].split(' ')[1],
       'end_time': element['end_time'].split(' ')[1],
       "isDone": true
    };

    if(!evs.containsKey(DateTime(y,m,d))) {
      evs[DateTime(y,m,d)] = [
        ev
      ];
    }
    else {
      evs[DateTime(y,m,d)].add(ev);
    }
    print("${DateTime(y,m,d)} : " + ev['title']);
});

问题是否在解析日期?或者列个清单?这能回答你的问题吗?我有相似的日期和不同的标题,我想列出一个相似日期时间的标题列表,那么解析日期是一个问题吗?你能再看一看吗,我更新了问题。另外,作为你将来参考的注释,这使得解析日期更容易。它可能对你有些用处。
widget.schedule.forEach((element) {
    String date = element['start_time'].split(' ')[0];
    int y = int.parse(date.split('-')[0]);
    int m = int.parse(date.split('-')[1]);
    int d = int.parse(date.split('-')[2]);

    var ev = {
       "title": element['subject_title'],
       'room': element['room'],
       'start_time': element['start_time'].split(' ')[1],
       'end_time': element['end_time'].split(' ')[1],
       "isDone": true
    };

    if(!evs.containsKey(DateTime(y,m,d))) {
      evs[DateTime(y,m,d)] = [
        ev
      ];
    }
    else {
      evs[DateTime(y,m,d)].add(ev);
    }
    print("${DateTime(y,m,d)} : " + ev['title']);
});