Flutter
[Flutter] 함수형프로그래밍 List of Maps VS Map of Maps 데이터 접근
hymndaniel
2023. 1. 16. 18:19
상황 : 달력에 입력된 데이터를 넣어야함
API response가 다음과 같은 List of Map 형태일때
List farmWorkData = [
{
"date": "2023-01-16",
"work_list": ["방제", "적엽", "정식"],
"work_detail": "1구역 비닐 멀칭\n1구역 방제\n컨설턴트 방문하여 급액처방 EC 양분조절\n2구역 정식",
"work_image_list": [
{
"image_url":
"https://ichef.bbci.co.uk/news/976/cpsprodpb/10928/production/_111408876__96579830_aseveralfruitpickersbendingoverbbc.jpg.webp",
"mesure_dt": "2022-12-24 15:29:14"
},
{
"image_url":
"https://ichef.bbci.co.uk/news/976/cpsprodpb/10928/production/_111408876__96579830_aseveralfruitpickersbendingoverbbc.jpg.webp",
"mesure_dt": "2022-12-24 15:29:14"
},
{
"image_url":
"https://ichef.bbci.co.uk/news/976/cpsprodpb/10928/production/_111408876__96579830_aseveralfruitpickersbendingoverbbc.jpg.webp",
"mesure_dt": "2022-12-24 15:29:14"
}
]
},
{
"date": "2023-01-17",
"work_list": prefFarmWork,
"work_detail": "1구역 비닐 멀칭\n1구역 방제\n컨설턴트 방문하여 급액처방 EC 양분조절\n2구역 정식",
"work_image_list": [
{
"image_url":
"https://ichef.bbci.co.uk/news/976/cpsprodpb/10928/production/_111408876__96579830_aseveralfruitpickersbendingoverbbc.jpg.webp",
"mesure_dt": "2022-12-24 15:29:14"
},
{
"image_url":
"https://ichef.bbci.co.uk/news/976/cpsprodpb/10928/production/_111408876__96579830_aseveralfruitpickersbendingoverbbc.jpg.webp",
"mesure_dt": "2022-12-24 15:29:14"
},
{
"image_url":
"https://ichef.bbci.co.uk/news/976/cpsprodpb/10928/production/_111408876__96579830_aseveralfruitpickersbendingoverbbc.jpg.webp",
"mesure_dt": "2022-12-24 15:29:14"
}
]
},
];
다음과 같은 방법으로 데이터를 검색
List selectedList =
farmWorkData.where((x) => x['date'] == DateFormat('yyyy-MM-dd').format(_selectedDay!)).toList();
아래와 같이 Map형태로 변경하면
Map farmWorkData = {
"2023-01-16": {
"work_list": ["방제", "적엽", "정식"],
"work_detail": "1구역 비닐 멀칭\n1구역 방제\n컨설턴트 방문하여 급액처방 EC 양분조절\n2구역 정식",
"work_image_list": [
{
"image_url":
"https://ichef.bbci.co.uk/news/976/cpsprodpb/10928/production/_111408876__96579830_aseveralfruitpickersbendingoverbbc.jpg.webp",
"mesure_dt": "2022-12-24 15:29:14"
},
{
"image_url":
"https://ichef.bbci.co.uk/news/976/cpsprodpb/10928/production/_111408876__96579830_aseveralfruitpickersbendingoverbbc.jpg.webp",
"mesure_dt": "2022-12-24 15:29:14"
},
{
"image_url":
"https://ichef.bbci.co.uk/news/976/cpsprodpb/10928/production/_111408876__96579830_aseveralfruitpickersbendingoverbbc.jpg.webp",
"mesure_dt": "2022-12-24 15:29:14"
}
]
},
"2023-01-17": {
"work_list": prefFarmWork,
"work_detail": "1구역 비닐 멀칭\n1구역 방제\n컨설턴트 방문하여 급액처방 EC 양분조절\n2구역 정식",
"work_image_list": [
{
"image_url":
"https://ichef.bbci.co.uk/news/976/cpsprodpb/10928/production/_111408876__96579830_aseveralfruitpickersbendingoverbbc.jpg.webp",
"mesure_dt": "2022-12-24 15:29:14"
},
{
"image_url":
"https://ichef.bbci.co.uk/news/976/cpsprodpb/10928/production/_111408876__96579830_aseveralfruitpickersbendingoverbbc.jpg.webp",
"mesure_dt": "2022-12-24 15:29:14"
},
{
"image_url":
"https://ichef.bbci.co.uk/news/976/cpsprodpb/10928/production/_111408876__96579830_aseveralfruitpickersbendingoverbbc.jpg.webp",
"mesure_dt": "2022-12-24 15:29:14"
}
]
},
};
Map의 Key, Value 값으로 접근
responseJson.forEach((key, value) {
DateTime date = DateTime.parse(key); //작업 날짜를 날짜형식으로 처리
List<MonthEvent> workList = [];
for (var work in value['work_list']) {
workList.add(MonthEvent(work)); //이벤트 모델에 넣어서 추가
}
eventSource[date] = workList;
});
참고
[Flutter/Dart] Functional Programming(함수형 프로그래밍)
Useful List method (유용한 리스트 메소드 정리)
velog.io
https://codechacha.com/ko/dart-iterate-over-map/
Flutter/Dart - Map 순회 방법
for loop 등으로 Map(HashMap)의 아이템들을 순회하는 방법을 소개합니다. Map.forEach((key, value) { })로 Map의 key-value 아이템을 순회할 수 있습니다. Map.entries는 아이템들에 대한 MapEntry의 Iterable 객체를 리
codechacha.com
728x90