如何解决Dart 无法更新地图
我的目的是为 Flutter clean_calendar 插件返回一张地图。我的 json 主体返回 List
我的课程是;
class Calendaractivity {
final String title;
final DateTime startingDate;
final DateTime endDate;
Calendaractivity({
required this.title,required this.startingDate,required this.endDate,});
factory Calendaractivity.fromJson(Map<String,dynamic> json) {
return Calendaractivity(
title: json['baslik'] as String,startingDate: DateTime.parse(json["baslatarih"]),endDate: DateTime.parse(json["bitistarih"]),);
}
}
class CleanCalendarEvent {
String summary;
String description;
String location;
DateTime startTime;
DateTime endTime;
Color color;
bool isAllDay;
bool isDone;
CleanCalendarEvent(this.summary,{this.description = '',this.location = '',required this.startTime,required this.endTime,this.color = Colors.blue,this.isAllDay = false,this.isDone = false});
}
我的方法是;
Map<DateTime,List<CleanCalendarEvent>>
listofCalendaractivityToMapOfCleanCalendarEvent(
List<Calendaractivity> listofCalendaractivity) {
final map = <DateTime,List<CleanCalendarEvent>>{};
for (var i = 0; i < listofCalendaractivity.length; i++) {
map.update(
DateTime(2020,10,2),(value) => value
..add(CleanCalendarEvent(listofCalendaractivity[i].title,startTime: listofCalendaractivity[i].startingDate,endTime: listofCalendaractivity[i].endDate)));
}
return map;
}
但是如果我这样做而不是 for 循环映射值总是从 ifabsent() 函数中获取它。
listofCalendaractivity.forEach(
(element) {
map.update(
element.startingDate,(list) =>
list
..add(
CleanCalendarEvent(
'ali',description: 'ali',startTime: element.startingDate,endTime: element.endDate,),ifAbsent: () =>
[
CleanCalendarEvent(element.title,description: element.title,color: Colors.grey),]);
},);
我的错误是
======== Exception caught by widgets library =======================================================
The following ArgumentError was thrown building FutureBuilder<List<Calendaractivity>>(dirty,state: _FutureBuilderState<List<Calendaractivity>>#8bfea):
Invalid argument (key): Key not in map.: Instance of 'DateTime'
The relevant error-causing widget was:
FutureBuilder<List<Calendaractivity>> file:///D:/Flutter/Github/cbkmobil/lib/screens/calenderPage.dart:30:16
When the exception was thrown,this was the stack:
#0 MapMixin.update (dart:collection/maps.dart:154:5)
#1 listofCalendaractivityToMapOfCleanCalendarEvent (package:cbkmobil/screens/calenderPage.dart:79:9)
#2 _CalenderPageState.build.<anonymous closure> (package:cbkmobil/screens/calenderPage.dart:40:25)
#3 _FutureBuilderState.build (package:Flutter/src/widgets/async.dart:775:55)
#4 StatefulElement.build (package:Flutter/src/widgets/framework.dart:4691:27)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。