본문 바로가기
앱 프로그래밍/Flutter

플러터로 기상청 날씨 앱 만들기 일지 6. 시간별 날씨, 3일간 오전/오후 날씨 아이콘 처리

by 청량리 물냉면 2022. 1. 16.
반응형

시간별 날씨

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시 사이에는 오늘의 오전/오후 아이콘을 불러오지 못해 오류가 발생한다. 우선 오류가 발생하지 않는 시각의 화면은 이렇다.

 

반응형