Сначала реорганизуйте данные, как показано ниже:
final organizedData = new HashMap<String, List<Car>>();
for(final car in dummyData){
if(!organizedData[car.day]){
organizedData[car.day] = new List<Car>();
organizedData[car.day].add(car);
}else{
organizedData[car.day].add(car);
}
}
Таким образом, вы будете группировать автомобили по дням на карте, например organizData ["Monday"] будет содержать список из двух автомобилей. и так далее.
Теперь поместите все это в ListView с расширяемым виджетом, возможно, что-то вроде этого:
Widget expandableList() {
return ListView.builder(
itemCount: organizedData.length,
itemBuilder: (context, index) {
String day = organizedData.keys.elementAt(index);
return Card(
child: ExpandablePanel(
header: day,
collapsed: Text('some text', softWrap: true, maxLines: 2, overflow: TextOverflow.ellipsis,),
expanded: Card(
child: Row(
children: carsUI(organizedData[day]),
),
tapHeaderToExpand: true,
hasIcon: true,
),
);
},
);
}
List<Widget> carsUI(List<Car> cars){
final ui = cars.map((car){
return Text(car.speed + ", " + car.model);
}).toList();
return ui;
}
Надеюсь, это поможет.