작성
·
86
0
안녕하세요 코트팩토리님! 열심히 수강중인 수강생입니다.
현재 제가 미세먼지앱에서 데이터베이스에서 데이터 가져오기 파트를 듣는 중에
만약 !snapshot.hasData이라면 '데이터가 없습니다' 라고
코드를 치고 에뮬레이터를 실행을 해본 뒤로 계속 위에 이미지와 정보들은 사라지고 '데이터가 없습니다' 만 뜨고 있는 상황입니다.
그래서 왜 데이터가 없을까라는 생각에 막 이곳저곳 둘러보고 썼다 지우고 하다가 stat_repository에 print를 추가해보았습니다.
static Future<void> fetchData() async {
final isar = GetIt.I<Isar>();
for (ItemCode itemCode in ItemCode.values) {
print('ItemCode: ${itemCode.name}');
await fetchDataByItemCode(itemCode: itemCode);
}
중간에 저렇게 추가를 하였더니
I/flutter ( 3033): ItemCode: SO2
I/flutter ( 3033): ItemCode: SO2
D/EGL_emulation( 3033): app_time_stats: avg=2533.58ms min=26.00ms max=11703.56ms count=5
I/flutter ( 3033): ItemCode: SO2
E/flutter ( 3033): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: type 'List<dynamic>' is not a subtype of type 'List<Map<String, dynamic>>' in type cast
밑에 로그에 이렇게 떠서 뭔가 이상하다 싶어 고쳐볼려 했으나 고치는 방법도 잘 모르겠고 저게 원인이 맞는지도 잘 모르겠습니다.. 미세먼지 파트가 어려워서 중간에 끊고 다시 듣는 중에 여기까지 와서 다시 돌아가긴 아깝고 제가 건드리면 더 엉망이 될까봐 이렇게 질문 드립니다.
답변 2
0
안녕하세요!
타입 관련 에러로 보입니다. 값들이 정확히 받아지고 있는지 확인 해보세요!
(가끔 API에서 null이 명세되지 않은 API에 null이 반환되는 경우가 있습니다)
감사합니다!
0
안녕하세요, 인프런 AI 인턴입니다. 퓅호님, 미세먼지 앱 개발 중 데이터 페칭 문제로 고민이 많으셨군요.
이 문제가 발생하는 원인은 보통 데이터 타입과 관련이 있습니다. 로그에 나타난 에러 메시지인 List<dynamic>
이 List<Map<String, dynamic>>
형식으로 캐스팅되지 않는다는 것을 보면, JSON 데이터를 파싱할 때 타입 변환 부분에서 문제가 발생하는 듯합니다.
여기서 주의해야 할 점은 fetchDataByItemCode
함수 내에서 JSON 데이터를 List<Map<String, dynamic>>
타입으로 변환할 때 올바른 변환 규칙을 적용했는지 확인하는 것입니다. 아마도 API 응답이 예상과 다른 형식이었거나, 실수로 타입 변환 부분에서 코드를 잘못 작성했을 가능성이 높습니다.
다음과 같은 방법으로 에러를 해결해볼 수 있습니다:
1. API 응답이 실제로 어떤 형태로 오는지 확인합니다. Postman이나 네트워크 로깅을 통해 데이터를 확인해보세요.
2. JSON 데이터를 파싱할 때 List<Map<String, dynamic>>
타입으로 변환하는 부분의 코드를 다시 한 번 점검하시고, 데이터 구조에 맞게끔 변환 규칙을 조정합니다.
3. 가능하다면 해당 강의와 코드를 비교하여 차이가 있는지 살펴보세요.
이전 답변 중에 비슷한 문제로 도움을 받은 다른 질문 내용과 답변을 링크합니다:
- 스타일링 마무리 진행시 에러 발생: 데이터 불러오기 및 처리 중 발생하는 타입 변환 문제에 대해 논의된 사례입니다.
- 포스트맨 및 앱 오류 질문입니다: API 호출 시 오류 처리를 어떻게 다룰 수 있는지 관련하여 참고 가능합니다.
질문을 통해 해당 문제를 명확히 해결하지 못했을 경우, 추가 정보를 토대로 다른 회원들과 강사님께서 더욱 구체적인 해법을 제공할 수 있을 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.