반응형
시간별 날씨
void weatherTime(){
if(now.hour < 3){
next1 = '0300';
next2 = '0600';
next3 = '0900';
next4 = '1200';
} else if(now.hour < 6){
next1 = '0600';
next2 = '0900';
next3 = '1200';
next4 = '1500';
} else if(now.hour < 9){
next1 = '0900';
next2 = '1200';
next3 = '1500';
next4 = '1800';
} else if(now.hour < 12){
next1 = '1200';
next2 = '1500';
next3 = '1800';
next4 = '2100';
} else if(now.hour < 15){
next1 = '1500';
next2 = '1800';
next3 = '2100';
next4 = '0000';
} else if(now.hour < 18){
next1 = '1800';
next2 = '2100';
next3 = '0000';
next4 = '0300';
} else if(now.hour < 21){
next1 = '2100';
next2 = '0000';
next3 = '0300';
next4 = '0600';
} else {
next1 = '0000';
next2 = '0300';
next3 = '0600';
next4 = '0900';
}
}
String? timeDesc(next){
if(next == '0000'){
return '0시';
} else if(next == '0300'){
return '3시';
} else if(next == '0600'){
return '6시';
} else if(next == '0900'){
return '9시';
} else if(next == '1200'){
return '12시';
} else if(next == '1500'){
return '15시';
} else if(next == '1800'){
return '18시';
} else if(next == '2100'){
return '21시';
}
}
위 함수를 아래와 같이 활용하였다.
weatherTime();
if (parsed_json['category'] == 'TMP') {
if (parsed_json['fcstTime'] == next1) {
next1_TMP = parsed_json['fcstValue'];
next1_time = timeDesc(next1);
} else if (parsed_json['fcstTime'] == next2) {
next2_TMP = parsed_json['fcstValue'];
next2_time = timeDesc(next2);
} else if (parsed_json['fcstTime'] == next3) {
next3_TMP = parsed_json['fcstValue'];
next3_time = timeDesc(next3);
} else if (parsed_json['fcstTime'] == next4) {
next4_TMP = parsed_json['fcstValue'];
next4_time = timeDesc(next4);
}
}
if (parsed_json['category'] == 'REH') {
if (parsed_json['fcstTime'] == next1) {
next1_REH = parsed_json['fcstValue'];
next1_time = timeDesc(next1);
} else if (parsed_json['fcstTime'] == next2) {
next2_REH = parsed_json['fcstValue'];
next2_time = timeDesc(next2);
} else if (parsed_json['fcstTime'] == next3) {
next3_REH = parsed_json['fcstValue'];
next3_time = timeDesc(next3);
} else if (parsed_json['fcstTime'] == next4) {
next4_REH = parsed_json['fcstValue'];
next4_time = timeDesc(next4);
}
}
뭔가 좀 더 효율적인 방법이 있을 것 같은데... 아직 여기까지밖에 생각이 안 난다.
결과
시간대별 날씨 아이콘 변경은 아직 구현하지 않았다.
시간별 날씨 아이콘
3일간 오전/오후 날씨 아이콘
날씨 아이콘 처리 코드가 생각보다 너무 길고 복잡하다;
게다가 3일간 날씨 아이콘은 처리를 잘못해서... 0시 ~ 2시 사이에는 오늘의 오전/오후 아이콘을 불러오지 못해 오류가 발생한다. 우선 오류가 발생하지 않는 시각의 화면은 이렇다.
반응형
'앱 프로그래밍 > Flutter' 카테고리의 다른 글
[플러터 기능 구현] loading 페이지를 거치지 않고 뒤로 가기 (0) | 2022.02.13 |
---|---|
플러터로 기상청 날씨 앱 만들기 일지 8. 마무리 (1) | 2022.01.17 |
플러터로 기상청 날씨 앱 만들기 일지 7. 설정 페이지 추가 (0) | 2022.01.16 |
플러터 DateFormat 요일 한국어로 출력 (0) | 2022.01.14 |
플러터로 기상청 날씨 앱 만들기 일지 5. 기상청 API 데이터 연동 오류 수정(HTTP service에러는 해결 불가능...) (2) | 2022.01.14 |
플러터로 기상청 날씨 앱 만들기 일지 4. 데이터 연동2(에어코리아 API) (0) | 2022.01.09 |