Firestore DB를 사용한 Flutter 데이터 직렬화 및 역 직렬화

아버지

Flutter에서 이상한 오류가 발생했습니다. 사용자 지정 데이터 모델을 사용하고 있습니다.

class ScanData {
  final String userID;
  final String companyID;
  final String scanID;
  final String deviceID;
  final String model;
  final Map result;
  final DateTime dateTime;
  final GeoPoint geoPoint;

  ScanData(
      {this.userID,
      this.companyID,
      this.scanID,
      this.deviceID,
      this.model,
      this.result,
      this.geoPoint,
      this.dateTime});

  factory ScanData.fromMap(Map data) {
    return ScanData(
      userID: data['userID'] ?? '',
      companyID: data['companyID'] ?? '',
      scanID: data['scanID'] ?? '',
      deviceID: data['deviceID'] ?? '',
      model: data['model'] ?? '',
      result: data['result'] ?? {},
      dateTime: data['dateTime'] as DateTime ?? DateTime.now(),
      geoPoint: data['geoPoint'] as GeoPoint ?? ['77', '28'],
    );
  }
}

Firestore에서 데이터를 검색하기 위해 Collection 클래스에 메서드를 생성했습니다.

class Collection<T> {
  final FirebaseFirestore _db = FirebaseFirestore.instance;
  final String path;
  CollectionReference ref;

  Collection({this.path}) {
    ref = _db.collection(path);
  }

  Future<List<T>> getData() async {
    var snapshots = await ref.get();
    return snapshots.docs
        .map((doc) => Global.models[T](doc.data) as T)
        .toList();
  }
}

위젯에서 호출하면 데이터 모델을 사용하지 않고 대신 컬렉션을 직접 호출하면 작동하지만 어디를 가든 생성하고 싶지 않고 유형 검사 및 인텔리 젠스에 도움이되기 때문에 훨씬 쉽습니다.

FutureBuilder(
    future: Collection<ScanData>(path: 'scans').getData(),
    builder: (context, AsyncSnapshot<List<ScanData>> snapshot) {
        if (!snapshot.hasData || snapshot.hasError) {
            return Container(
                alignment: Alignment.center,
                child: CircularProgressIndicator());
                } else {
                return _buildScansList(snapshot.data);
                }
           },
         )

글로벌 :

class Global {

  static final Map models = {
    ScanData: (data) => ScanData.fromMap(data),
  };
}

오류 (Globals fromMap에서 발생) :

Exception has occurred.
_TypeError (type '() => Map<String, dynamic>' is not a subtype of type 'Map<dynamic, dynamic>')

ScanData 모델에 다음을 넣어 보았습니다.

factory ScanData.fromMap(Map<String,dynamic> data) {...}

그러나 이것은 또 다른 오류를 제공합니다.

Exception has occurred.
_TypeError (type '() => Map<String, dynamic>' is not a subtype of type 'Map<String, dynamic>')

: | 감사합니다.

비르 카 123

Collection 클래스의 getData () 메서드에서 doc.data속성이 아니라 메서드이므로 ().

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

clrmq를 통한 직렬화 및 역 직렬화

분류에서Dev

사전을 이진으로 직렬화 및 역 직렬화

분류에서Dev

CustomCreationConverter를 사용한 JSON 역 직렬화를 통해 유형 생성 및 데이터 주입

분류에서Dev

파일에 대한 데이터 직렬화 / 역 직렬화

분류에서Dev

Jackson의 다형성 직렬화 / 역 직렬화 및 사용자 지정 직렬화 / 역 직렬화

분류에서Dev

비트 크기 정의를 사용한 Java 사용자 정의 직렬화 및 역 직렬화

분류에서Dev

C #을 사용하여 XML 파일에서 데이터를 직렬화 및 역 직렬화하는 방법은 무엇입니까?

분류에서Dev

Java에서 인터페이스 직렬화 및 역 직렬화

분류에서Dev

잭슨 사용자 정의 직렬화 및 역 직렬화

분류에서Dev

Jackson을 사용하여 Lambda 직렬화 및 역 직렬화

분류에서Dev

spring-data-rest 및 컨트롤러는 직렬화 / 역 직렬화에 동일한 objectMaper를 사용합니다.

분류에서Dev

ServiceStack은 객체로 사전 직렬화 및 역 직렬화

분류에서Dev

(수동) 이진 검색 트리 직렬화 및 역 직렬화

분류에서Dev

직렬화 및 역 직렬화 람다

분류에서Dev

자식 직렬화 및 역 직렬화

분류에서Dev

char (s) 직렬화 및 역 직렬화

분류에서Dev

이미지를 사용한 데이터 계약 직렬화 / 직렬화

분류에서Dev

Boost 및 uint8_t를 사용한 이진 직렬화

분류에서Dev

중첩 된 JSON API 데이터를 CSV로 역 직렬화 및 내보내기

분류에서Dev

Jackson을 사용하여 JAVA 클래스를 대상으로하는 JSON 직렬화 및 역 직렬화

분류에서Dev

Json.NET을 사용하여 ArrayList의 ArrayList를 직렬화 및 역 직렬화하는 방법

분류에서Dev

StreamReader 및 JsonTextReader를 사용한 역 직렬화가 작동하지 않음

분류에서Dev

Gson 및 Retrofit 2를 사용하여 복잡한 API 응답 역 직렬화

분류에서Dev

DataContractSerializer를 사용하여 역 직렬화

분류에서Dev

Unity에서 GameObject 및 Vector2를 포함하는 사전을 직렬화 및 역 직렬화하는 방법

분류에서Dev

파일에서 개체를 역 직렬화 및 재 직렬화하는 데 문제가있는 C # JSON.net

분류에서Dev

속성 이름에 $를 사용하여 JSON 역 직렬화

분류에서Dev

Jackson-주석없이 Builder를 사용하여 역 직렬화

분류에서Dev

JSON 직렬 변환기를 사용하여 Mongo DB 개체 ID 역 직렬화

Related 관련 기사

  1. 1

    clrmq를 통한 직렬화 및 역 직렬화

  2. 2

    사전을 이진으로 직렬화 및 역 직렬화

  3. 3

    CustomCreationConverter를 사용한 JSON 역 직렬화를 통해 유형 생성 및 데이터 주입

  4. 4

    파일에 대한 데이터 직렬화 / 역 직렬화

  5. 5

    Jackson의 다형성 직렬화 / 역 직렬화 및 사용자 지정 직렬화 / 역 직렬화

  6. 6

    비트 크기 정의를 사용한 Java 사용자 정의 직렬화 및 역 직렬화

  7. 7

    C #을 사용하여 XML 파일에서 데이터를 직렬화 및 역 직렬화하는 방법은 무엇입니까?

  8. 8

    Java에서 인터페이스 직렬화 및 역 직렬화

  9. 9

    잭슨 사용자 정의 직렬화 및 역 직렬화

  10. 10

    Jackson을 사용하여 Lambda 직렬화 및 역 직렬화

  11. 11

    spring-data-rest 및 컨트롤러는 직렬화 / 역 직렬화에 동일한 objectMaper를 사용합니다.

  12. 12

    ServiceStack은 객체로 사전 직렬화 및 역 직렬화

  13. 13

    (수동) 이진 검색 트리 직렬화 및 역 직렬화

  14. 14

    직렬화 및 역 직렬화 람다

  15. 15

    자식 직렬화 및 역 직렬화

  16. 16

    char (s) 직렬화 및 역 직렬화

  17. 17

    이미지를 사용한 데이터 계약 직렬화 / 직렬화

  18. 18

    Boost 및 uint8_t를 사용한 이진 직렬화

  19. 19

    중첩 된 JSON API 데이터를 CSV로 역 직렬화 및 내보내기

  20. 20

    Jackson을 사용하여 JAVA 클래스를 대상으로하는 JSON 직렬화 및 역 직렬화

  21. 21

    Json.NET을 사용하여 ArrayList의 ArrayList를 직렬화 및 역 직렬화하는 방법

  22. 22

    StreamReader 및 JsonTextReader를 사용한 역 직렬화가 작동하지 않음

  23. 23

    Gson 및 Retrofit 2를 사용하여 복잡한 API 응답 역 직렬화

  24. 24

    DataContractSerializer를 사용하여 역 직렬화

  25. 25

    Unity에서 GameObject 및 Vector2를 포함하는 사전을 직렬화 및 역 직렬화하는 방법

  26. 26

    파일에서 개체를 역 직렬화 및 재 직렬화하는 데 문제가있는 C # JSON.net

  27. 27

    속성 이름에 $를 사용하여 JSON 역 직렬화

  28. 28

    Jackson-주석없이 Builder를 사용하여 역 직렬화

  29. 29

    JSON 직렬 변환기를 사용하여 Mongo DB 개체 ID 역 직렬화

뜨겁다태그

보관