我想獲得availableSlots = allSlots-bookedSlots,這是代碼,請幫忙!
final List<timeSlot> allSlots=
[
TimeSlot(time: '6PM-7PM', isSelected: false),
TimeSlot(time: '7PM-8PM', isSelected: false),
TimeSlot(time: '8PM-9PM', isSelected: false),
];
final List<timeSlot> bookedSlots=
[
TimeSlot(time: '6PM-7PM', isSelected: false),
TimeSlot(time: '7PM-8PM', isSelected: false),
];
這是 TimeSlot 類
class TimeSlot {
String time;
bool isSelected;
TimeSlot({this.isSelected, this.time});
}
uj5u.com熱心網友回復:
首先覆寫“==”運算子以比較兩個 TimeSlot 值。
并從 allSlots 中過濾 bookedSlots 項以獲取 availableSlots。

void main() {
final List<TimeSlot> allSlots=
[
TimeSlot(time: '6PM-7PM', isSelected: false),
TimeSlot(time: '7PM-8PM', isSelected: false),
TimeSlot(time: '8PM-9PM', isSelected: false),
];
final List<TimeSlot> bookedSlots=
[
TimeSlot(time: '6PM-7PM', isSelected: false),
TimeSlot(time: '7PM-8PM', isSelected: false),
];
List<TimeSlot> availableSlots = allSlots.where((item) => !bookedSlots.contains(item)).toList();
print(allSlots);
print(availableSlots);
}
class TimeSlot {
String? time;
bool? isSelected;
TimeSlot({this.isSelected, this.time});
@override
bool operator==(Object other) {
return other is TimeSlot && other.time == time &&other.isSelected == isSelected;
}
@override
String toString() => '''TimeSlot {
time: $time,
isSelected: $isSelected,
}''';
@override
int get hashCode => Object.hash(time, isSelected);
}
uj5u.com熱心網友回復:
如果要測驗,請將以下代碼復制到 dartpad 中:https ://dartpad.dev/
void main() {
List<SomeClass> list1 = [SomeClass('item 1'), SomeClass('item 2'), SomeClass('item 3')];
List<SomeClass> list2 = [SomeClass('item 1'), SomeClass('item 3')];
List<SomeClass> deltaList = [];
print(list1);
deltaList = list1;
print(deltaList);
for(SomeClass item in list2){
deltaList.removeWhere((delta) => delta.name == item.name);
}
for (SomeClass item in deltaList){
print(item.name);
}
}
class SomeClass{
String name;
SomeClass(this.name);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/382237.html
