• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

미세먼지 Json 값 null일경우 에러

23.01.25 02:42 작성 23.01.25 02:42 수정 조회수 607

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

코드팩토리 디스코드
https://bit.ly/3HzRzUM

Flutter 강의를 구매하시면 코드팩토리 디스코드 서버 플러터 프리미엄 채널에 들어오실 수 있습니다! 디스코드 서버에 들어오시고 저에게 메세지로 강의를 구매하신 이메일을 보내주시면 프리미엄 채널에 등록해드려요! 프리미엄 채널에 들어오시면 모든 질의응답 최우선으로 답변해드립니다!

 

 

 안녕하세요 !!

궁금한게 있어서 질문 드립니다

지역 변경후 값 받아오는 곳에서

"jeonbuk":null

이값으로 받아오는데

jeonbuk = double.parse(json['jeonbuk'] ?? '0'),

null처리 한곳에

'0' 으로 변환 해주면 에러가 나오고


Bad state: No element

See also: https://flutter.dev/docs/testing/errors


jeonbuk = double.parse(json['jeonbuk']  ??  '0.01' ),

'0' 이상 값으로 변환하면 정상적으로 나오는데

이유가 궁금합니다 .

 

 

답변 3

·

답변을 작성해보세요.

0

da shin님의 프로필

da shin

질문자

2023.01.26

이해했습니다 감사합니다 !

0

Jaewook Jung님의 프로필

Jaewook Jung

2023.01.25

data_utils.dart 의 getStatusFromItemCodeAndValue 함수 수정이 필요합니다.

  • stat_model.dart에서 ‘전북’이 null이면, 0으로 처리가 되어 있음. 그런데 data_utils.dart의 아래 부분의 'return status.minFineDust < value'를 보면 minXX의 최소값이 0이기에 '0<0'이 되어서 모두 false가 됩니다.

  • 'return status.minFineDust < value'를 ''return status.minFineDust <= value'로 value보다 '작거나 같음'으로 변경하여 임시 방편으로 오류 처리 가능합니다.

  • (실제 미세먼지 서비스라면) 미세먼지 공공데이터가 null을 리턴하는 경우 '미세먼지 데이터 없음'으로 표시 하거나, '가장 최근에 정상적으로 수신 값'을 반영해주는 방법이 있겠습니다.

static StatusModel getStatusFromItemCodeAndValue({

  required double value,

  required ItemCode itemCode,

}) {

  return statusLevel.where((status) {

    if (itemCode == ItemCode.PM10) {

      return status.minFineDust < value;

    } else if (itemCode == ItemCode.PM25) {

      return status.minUltraFineDust < value;

    } else if (itemCode == ItemCode.CO) {

      return status.minCO < value;

    } else if (itemCode == ItemCode.O3) {

      return status.minO3 < value;

    } else if (itemCode == ItemCode.NO2) {

      return status.minNO2 < value;

    } else if (itemCode == ItemCode.SO2) {

      return status.minSO2 < value;

    } else {

      throw Exception('알수없는 ItemCode입니다.');

    }

  }).last;

}

답글 감사합니다!

0

안녕하세요!

질문주신 내용만으로 봤을때는 의심하고계신 부분의 문제가 아닌 것 같습니다.

void main() {

print(double.parse('0'));

}

위 코드를 실행하면 0이 잘 출력됩니다.

에러 위치를 조금 더 정확히 파악해보시고 추가 질문 부탁드립니다!

감사합니다.