gpt4 book ai didi

list - 由列表分配的值,每次迭代更改

转载 作者:行者123 更新时间:2023-12-03 04:24:25 25 4
gpt4 key购买 nike

这是按事件将事件分组的功能。它以List<EventK>开头,其中包含要排序的所有元素。结果是Map<DateTime, List<EventK>>

问题出在currentDayEvents上。一旦将其分配给_events,并且currentDayEvents的值在不同的迭代中更改,那么_events的值也会更改。如何在函数外获取_events的永久值?

void _getEvents()async{

setState(() {
isLoading = true;
});

List<EventK> events = await EventApi.getPersonalEvents();
List<EventK> currentDayEvents = [];

DateTime currentDay;

for(int i = 0; i<events.length-1; i++){

currentDay = events[i].startTime;
currentDayEvents.add(events[i]);

for(int j=i+1; j<events.length; j++){

DateTime analyzedDay = events[j].startTime;

if(currentDay.year == analyzedDay.year &&
currentDay.month == analyzedDay.month &&
currentDay.day == analyzedDay.day
){
currentDayEvents.add(events[j]);
events.removeAt(j);
j -= 1;
}

}

_events.putIfAbsent(currentDay, ()=>currentDayEvents);
currentDayEvents.clear();

}

setState(() {
isLoading = false;
});
}

最佳答案

currentDayEvents的声明移至for循环内,以在每次迭代时重新初始化一个新对象。这样,您可以删除currentDayEvents.clear()

for(int i = 0; i<events.length-1; i++){

currentDay = events[i].startTime;
var currentDayEvents = [events[i]];

for(int j=i+1; j<events.length; j++){

DateTime analyzedDay = events[j].startTime;

if(currentDay.year == analyzedDay.year &&
currentDay.month == analyzedDay.month &&
currentDay.day == analyzedDay.day
){
currentDayEvents.add(events[j]);
events.removeAt(j);
j -= 1;
}

}

_events.putIfAbsent(currentDay, ()=>currentDayEvents);
}

关于list - 由列表分配的值,每次迭代更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60557829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com