Reputation: 1
I have this list of WorldTime with keys, How do I group these list by the location key. Below is the code i have written.
List<WorldTime> locations = [
WorldTime(url: 'Europe/London', location: 'London', flag: 'London.png'),
WorldTime(url: 'Africa/Abidjan',location:'Abidjan'),
WorldTime(url: 'Africa/Accra', location: 'Accra', flag: 'ghana.png'),
WorldTime(url: 'Africa/Algeria', location: 'Algiers', flag: 'Algeria.png'),
WorldTime(url: 'Africa/Guinea ', location: 'Bassau', flag: 'Guinea'),
WorldTime(url: 'Africa/Cairo', location: 'Cairo', flag: 'Egypt.png'),
WorldTime(url: 'Africa/Casablanca', location: 'Casablanca', flag: 'Casablanca.png'),
WorldTime(url: 'Africa/Ceuta ', location: 'Ceuta', flag: 'Ceuta.png'),
WorldTime(url: 'Africa/El_Aaiun', location: 'El_Aaiun', flag: 'El_Aaiun'),
WorldTime(url: 'Africa/Johannesburg', location: 'Johannesburg', flag: 'Johannesburg.png'),
WorldTime(url: 'Africa/Juba', location: 'Juba', flag: 'Juba.png'),
WorldTime(url: 'Africa/Khartoum', location: 'Khartoum', flag: 'Khartoum.png'),
WorldTime(url: 'Africa/Lagos', location: 'Lagos', flag: 'Lagos.png'),
WorldTime(url: 'Africa/Maputo', location: 'Maputo', flag: 'Maputo.png'),
WorldTime(url: 'Africa/Monrovia', location: 'Monrovia', flag: 'Monrovia.png'),
WorldTime(url: 'Africa/Nairobi', location: 'Nairobi', flag: 'Nairobi.png'),
WorldTime(url: 'Africa/Ndjamena', location: 'Ndjamena', flag: 'Ndjamena.png'),
```![End Result](https://i.sstatic.net/DVPHK.png)
Upvotes: 0
Views: 179
Reputation: 1310
Dart collections does not have a group function like Kotlin, but you can use this lib: https://pub.dev/packages/supercharged
Now you can group:
List<WorldTime> locations = [
WorldTime(url: 'Europe/London', location: 'London', flag: 'London.png'),
WorldTime(url: 'Africa/Abidjan',location:'London'),
WorldTime(url: 'Africa/Accra', location: 'Accra', flag: 'ghana.png'),
WorldTime(url: 'Africa/Algeria', location: 'Algiers', flag: 'Algeria.png'),
]
locations.groupBy((element) => element.location == 'London' ? "currentLocation" : "otherLocations")
Upvotes: 1
Reputation: 1238
I'm assuming you want to sort the list by location? (Sorry your question is a little confusing)
You can use the List.sort() function, it would look like this:
locations.sort((a,b) => a.location.compareTo(b.location));
print(locations)
Upvotes: 0