inflearn logo
강의

Khóa học

Chia sẻ kiến thức

[Code Factory] [Nhập môn] Phát triển ứng dụng Flutter 3.0 - Thoát khỏi trình độ sơ cấp ngay hôm nay với 10 dự án!

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

897

da shin

3 câu hỏi đã được viết

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' 이상 값으로 변환하면 정상적으로 나오는데

이유가 궁금합니다 .

 

 

flutter 클론코딩 클론코딩 Flutter

Câu trả lời 3

0

da shin

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

0

Jimmy

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

codefactory

답글 감사합니다!

0

codefactory

안녕하세요!

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

void main() {

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

}

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

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

감사합니다.

video_call 플러그인 설치후 에러 발생

0

41

1

SDK 안드로이드 설치 질문!

0

55

1

코드팩토리 디스코드 링크 다시 부탁드려요~

0

90

1

Webview를 이용해서 URL 상의 페이지 출력 불가

0

63

1

홈스크린 함수를 함축해서 main.dart에 옮기는 문제

0

51

1

플레이스토어

0

57

1

아고라 엔진 init 함수의 반환타입이 Future<void> 이것의 의미는 무엇인가요?

0

52

1

가이드라인 질문

0

55

0

emulator 에러 환경설정 뭐가 문제 일까요??

0

75

1

emulator 실행 오류

0

91

3

Column을 가로방향 최대 사이즈를 차지하도록 하는 방법에 관련

0

68

1

pubspec.yaml에서 font를 추가하면서 weight 값을 지정하는 것이 의미가 있는 것인지 문의

0

41

1

setState()를 호출하지 않으면 build가 실행 안되는 건가요?

0

51

1

video_call 플러그인 설치시 에러문제

0

61

1

children 안의 if 문에서 { } 못쓰는 이유?

0

45

1

이렇게 오류가 떠요

0

61

1

AppBar 사용했는데

0

60

2

[문제해결] '오늘도 출첵!' 의 171번 강의에서 중요한 문제를 발견했습니다

0

54

1

StatefulWidget 실습 에러가 발생합니다.[해결완료]

0

61

1

Video Player 프로젝트에 대한 추가 질문

0

50

0

Row위젯이나 column위젯의 위치는 누가 정하나요??

0

38

1

geolocator 오류때문에 개발진행이 불가능입니다

0

59

1

API 관련 이슈

0

82

2

VoidCallback 뒤에 null 연산자 표기에 관한 질문

0

42

1