type 'A' is not a subtype of type 'B'
아래와 같은 오류가 뜬다.
final List<String> authors = json['authors']
// 에러
=> type 'List<dynamic>' is not a subtype of type 'List<String>'
json['authors'].runtimeType 을 로깅해서 봤더니 List<dynamic> 이라고 떴다. 만약 실제로 String 타입이 오고 dart가 이를 모르는 상황이라면 타입 캐스팅을 위해 아래처럼 바꿔주면 된다.
(하지만 타입이 정말 다른 경우는 똑같은 에러가 발생할 것이다.)
optional chaining
optional chaining은 null이 올 수 있는 객체라면, null이 아닐 때만 그 안의 method나 값을 꺼낼 수 있게 해주는 것이다.
예를 들어 타입 캐스팅하려는 객체가 null이 될 수 있다면, 객체에 optional chaining ?. 을 붙여 null이 아닌 경우에 cast 함수가 실행되도록 할 수 있다.
final List<String> authors = json['authors']?.cast<String>()
references
'개발 이야기 > flutter' 카테고리의 다른 글
[flutter] graphql code generator | artemis 사용 방법과 장단점 (2) | 2021.02.26 |
---|---|
[dart] what is factory? | 싱글톤 패턴 singleton pattern class (0) | 2021.02.26 |
[flutter] 불필요한 rerendering을 피하는 방법 | AutomaticKeepAliveClientMixin (1) | 2021.02.26 |
[Flutter] 자식 위젯에서 부모 위젯 state 참조하는 방법 | findAncestorStateOfType (0) | 2021.02.26 |