inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Flutter nhập môn - Phát triển Android, iOS cùng một lúc (với Firebase)

17. Đọc bài viết trong Firestore

firestore에서 List<String>을 받아오고 싶을 때

543

johnywhisky

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

0

안녕하세요. 강의를 따라 오던 중 복수의 이미지 리스트 List<String>으로 업로드하고 또 읽어올 수 있을지 궁금증이 생겨 테스트를 하던 중 도저히 해결되지 않은 문제가 있어 질문 올립니다.(업로드는 성공했습니다.)

현재 강의 코드에서 imageUrlString에서 List<String>으로 바꿔 아래와 같이 수정했습니다.

class Post {
  String id;
  String userId;
  String title;
  List<String> imageUrls;

  Post({
    required this.id,
    required this.userId,
    required this.title,
    required this.imageUrls,
  });

  factory Post.fromJson(Map<String, dynamic> json) {
    return Post(
      id: json['id'] as String,
      userId: json['userId'] as String,
      title: json['title'] as String,
      imageUrls: json['imageUrls'] as List<String>,
    );
  }

  Map<String, dynamic> toJson() {
    return {
      'id': id,
      'userId': userId,
      'title': title,
      'imageUrls': imageUrls,
    };
  }
}

여기까진 문제가 없었는데, firestore에서 데이터를 불러와 List<Post>로 가공하는 부분에서 아래와 같이 에러가 발생하고 있습니다.

List<Post> posts = snapshot.data!.docs.map((el) => el.data()).toList();

// type 'List<dynamic>' is not a subtype of type 'List<String>' in type cast

 

다음처럼 fromJson 함수를 수정해보려 했는데 해결되지 않아 질문합니다 ㅠㅠ 해결 방법이 있을까요??

import 'dart:convert';

// ...
class Post {

  // ...

  factory Post.fromJson(Map<String, dynamic> jsonData) {

    final imageUrls = json.decode(jsonData['imageUrls']).cast<String>().toList();

    return Post(
      id: jsonData['id'] as String,
      userId: jsonData['userId'] as String,
      title: jsonData['title'] as String,
      imageUrls: imageUrls,
    );
  }

(위와 같이 수정하면 type 'List<dynamic>' is not a subtype of type 'String' 이런 에러 메세지가 뜹니다.

flutter android Flutter ios

Câu trả lời 1

0

survivalcoding

imageUrls 는 firestore 쪽에 Array 로 저장한 것이지요?

그렇다면 as 로 캐스팅 대신에 List.from 생성자를 사용해 보시겠어요? (확인 못 했음)

만약 안 된다면 디버그 모드에서 json['imageUrls'] 내용이 어떤지 볼 필요가 있을 것 같습니다.

imageUrls: List<String>.from(json['imageUrls'])

과거 ai없을때 듣고 다시 듣는 중인데

1

54

1

40번 수업이 완료가 되지 않아요.

0

61

1

최신버전 firebase_ui_auth 할때 EmailAuthProvider 오류 잡는 방법

0

157

1

애뮬레이터로 main.dart를 실행하면 컴퓨터가 멈춥니다.

0

328

2

혹시 재촬영 계획이 있으신가요?

0

249

1

애뮬레이터 Intel HAXM 다운로드가 안돼요

0

556

2

에뮬레이터 홈화면

0

258

1

종속성 충돌 질문

0

341

1

plugin 중에서 에러 발생시 발생한 코드 위치에 바로 에러 표시해주는 기능 있을까요?

0

425

1

firebase option 오류

0

373

2

alt+enter 가 맥북에서는 option enter로 알고 있는데 단축키가 먹히지 않습니다 ㅜㅜ

0

1458

11

파이어베이스 연결시 갑자기 다른 오류가 발생했어요 ㅠㅠ

0

409

1

Failed assertion: line 246 pos 15: 'items.length >= 2': is not true.

0

1319

1

Firebase로 이메일 로그인 기능 구현

0

354

1

GridView에 데이터가 표시가 안됩니다.

0

297

1

The Android Gradle plugin supports only Kotlin Gradle plugin version 1.5.20 and higher. 해결법을 모르겠습니다

0

6895

4

안드로이드 에뮬레이터 실행오류

1

1008

1

firebase 연동 중 오류 질문

0

467

1

05. AccountPage UI 작성강의 설명문의

0

370

1

firebase 이메일 로그인 설정 관련 오류 문의의 건

0

1087

1

기본위젯

0

2729

1

firebase에 upload 에러가 발생했습니다

0

1269

3

디버그 서명 인증서 SHA-1가 구해지지 않습니다.

1

317

1

비동기로 콜백을 받는다는 것이 무슨 뜻인가요?

2

413

1