首页 > 解决方案 > 如何在flutter firebase中使用fromJson将数据存储到模型中?

问题描述

目前我正在做一个颤振项目。我正在尝试创建一个从 Firebase 文档获取快照并使用 fromJson 函数将其存储到 userData 模型中的函数。

这是我的User.dart

class UserData {
  // final String uid;
  final String usn;
  final String fullName;
  final int? sem;
  final String branch;
  final String section;

  UserData({
    required this.usn,
    required this.fullName,
    required this.sem,
    required this.branch,
    required this.section,
  });

  factory UserData.fromJson(Map<String, dynamic> json) {
    return UserData(
        usn: json['usn'],
        fullName: json['fullName'],
        sem: json['sem'],
        branch: json['branch'],
        section: json['section']);
  }

  Map<String, dynamic> toMap() {
    return {
      'usn': usn,
      'fullName': fullName,
      'sem': sem,
      'branch': branch,
      'section': section
    };
  }
}

在我的database.dart 中,我想在其中创建一个 Stream 函数以映射到 fromJson 这是我尝试过的

 Stream<UserData?> curUserData() {
    return _db.collection('users').doc(user.uid).snapshots()
    .map((DocumentSnapshot snapshot) => UserData.fromJson(snapshot.data()));
  }

任何人都可以纠正这个功能吗?

我从上面的函数中得到错误。

标签: firebaseflutterdartfirebase-realtime-databasegoogle-cloud-firestore

解决方案


你的问题只是错误的类型断言。试试这个:DocumentSnapshot改变DocumentSnapshot<Map<String, dynamic>>

 Stream<UserData?> curUserData() {
    return _db.collection('users').doc(user.uid).snapshots()
    .map((DocumentSnapshot<Map<String, dynamic>> snapshot) => UserData.fromDocument(snapshot.data()!));
  }

推荐阅读