반응형
질문
Firestore 예제에서 복사한 코드 스니펫이 있습니다:
Widget _buildBody(BuildContext context) {
return new StreamBuilder(
stream: _getEventStream(),
builder: (context, snapshot) {
if (!snapshot.hasData) return new Text('Loading...');
return new ListView(
children: snapshot.data.documents.map((document) {
return new ListTile(
title: new Text(document['name']),
subtitle: new Text("Class"),
);
}).toList(),
);
},
);
}
하지만 이 오류가 발생합니다
type 'List<dynamic>' is not a subtype of type 'List<Widget>'
여기서 무엇이 잘못됐을까요?
답변
문제는 여기서 유형 추론이 예상치 못한 방식으로 실패한다는 것입니다. 해결책은 map
메소드에 유형 인수를 제공하는 것입니다.
snapshot.data.documents.map<Widget>((document) {
return new ListTile(
title: new Text(document['name']),
subtitle: new Text("Class"),
);
}).toList()
보다 복잡한 답은 children
의 유형이 List<Widget>
이지만 이 정보가 map
호출로 다시 흐르지 않는다는 것입니다. 이것은 map
이 toList
에 따라 이어지기 때문일 수 있으며 클로저의 반환 값을 유형 주석으로 표시할 수 있는 방법이 없기 때문일 수 있습니다.
반응형
댓글