I am trying to map a DocumentSnap from Firebase to a Json Class in Flutter. I can confirm that my is getting the data from the document, but i cannot pass the gathered data to my Json object. I have attached code and error message.
Class for getting the document from Firebase DatabaseService.dart
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:oast_app/widgets/auth_class.dart';
class FireTest {
Future<List<UserCheck>> streamUser(FirebaseUser user) async {
DocumentSnapshot querySnapshot =
await Firestore.instance.collection('users').document(user.uid).get();
if (querySnapshot.exists) {
print('success');
print(querySnapshot.data['fname']);
print(querySnapshot.data['lname']);
querySnapshot.data.map<String, dynamic>((json) => UserCheck.fromJson(json)); **this is whats erroring**
}
return [];
}
}
Json Object class
import 'package:flutter/material.dart';
import 'package:json_annotation/json_annotation.dart';
part 'auth_class.g.dart';
@JsonSerializable(nullable: false)
class UserCheck extends ChangeNotifier {
final String uid;
final String fName;
final String lName;
final String regEmail;
final String org;
UserCheck({
this.uid,
this.fName,
this.lName,
this.regEmail,
this.org,
});
factory UserCheck.fromJson(Map<String, dynamic> json) =>
_$UserCheckFromJson(json);
Map<String, dynamic> toJson() => _$UserCheckToJson(this);
}
Error Message
Compiler message: lib/widgets/database_service.dart:17:76: Error: The argument type 'String' can't be assigned to the parameter type 'Map<String, dynamic>'.
- 'Map' is from 'dart:core'. querySnapshot.data.map<String, dynamic>((json) => UserCheck.fromJson(json)); ^ lib/widgets/database_service.dart:17:67: Error: A value of type 'UserCheck' can't be assigned to a variable of type 'MapEntry<String, dynamic>'.
- 'UserCheck' is from 'package:oast_app/widgets/auth_class.dart' ('lib/widgets/auth_class.dart').
- 'MapEntry' is from 'dart:core'. querySnapshot.data.map<String, dynamic>((json) => UserCheck.fromJson(json)); ^ lib/widgets/database_service.dart:17:47: Error: The argument type 'MapEntry<String, dynamic> Function(String)' can't be assigned to the parameter type 'MapEntry<String, dynamic> Function(String, dynamic)'.
- 'MapEntry' is from 'dart:core'. querySnapshot.data.map<String, dynamic>((json) => UserCheck.fromJson(json));
firebase structure
^ collection('users').document('user.uid') this is the document im trying to get