Skip to content

Instantly share code, notes, and snippets.

@zgramming
Created November 9, 2021 18:21
Show Gist options
  • Save zgramming/53171c88552d0951c0520e011706758f to your computer and use it in GitHub Desktop.
Save zgramming/53171c88552d0951c0520e011706758f to your computer and use it in GitHub Desktop.
import 'dart:convert';
void main(){
var json = '''
[
{
"descricao" : "deskripsi 1",
"data_acao" : "2021-11-09",
"hora_inicial_acao" : "08:00:00",
"hora_final_acao" : "12:00:00"
},
{
"descricao" : "deskripsi 2",
"data_acao" : "2021-12-09",
"hora_inicial_acao" : "08:00:00",
"hora_final_acao" : "12:00:00"
},
{
"descricao" : "deskripsi 3",
"data_acao" : "2021-12-09",
"hora_inicial_acao" : "13:00:00",
"hora_final_acao" : "18:00:00"
}
]
''';
final List<dynamic> responseJson = jsonDecode(json);
final events = responseJson.map((e) => EventModel.fromMap(e)).toList();
var map = <DateTime, List<EventModel>>{};
for (final event in events) {
final date = event.dataAcao;
var original = map[date];
if (original == null) {
map[date] = [event];
} else {
map[date] = [...original, event];
}
}
map.forEach((key,value){
print('Key : $key | Value : $value');
});
}
class EventModel {
EventModel({
required this.descricao,
required this.dataAcao,
required this.horaInicialAcao,
required this.horaFinalAcao,
});
final String descricao;
final DateTime dataAcao;
final String horaInicialAcao;
final String horaFinalAcao;
EventModel copyWith({
String? descricao,
DateTime? dataAcao,
String? horaInicialAcao,
String? horaFinalAcao,
}) {
return EventModel(
descricao: descricao ?? this.descricao,
dataAcao: dataAcao ?? this.dataAcao,
horaInicialAcao: horaInicialAcao ?? this.horaInicialAcao,
horaFinalAcao: horaFinalAcao ?? this.horaFinalAcao,
);
}
Map<String, dynamic> toMap() {
return {
'descricao': descricao,
'data_acao': dataAcao.millisecondsSinceEpoch,
'hora_inicial_acao': horaInicialAcao,
'hora_final_acao': horaFinalAcao,
};
}
factory EventModel.fromMap(Map<String, dynamic> map) {
return EventModel(
descricao: map['descricao'],
dataAcao: DateTime.parse(map['data_acao']),
horaInicialAcao: map['hora_inicial_acao'],
horaFinalAcao: map['hora_final_acao'],
);
}
String toJson() => json.encode(toMap());
factory EventModel.fromJson(String source) => EventModel.fromMap(json.decode(source));
@override
String toString() {
return 'EventModel(descricao: $descricao, dataAcao: $dataAcao, horaInicialAcao: $horaInicialAcao, horaFinalAcao: $horaFinalAcao)';
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment