gpt4 book ai didi

Firebase Documentsnapshot 映射到 Flutter 中的 Json 对象

转载 作者:行者123 更新时间:2023-12-04 10:54:34 29 4
gpt4 key购买 nike

我正在尝试将 Firebase 中的 DocumentSnap 映射到 Flutter 中的 Json 类。我可以确认我正在从文档中获取数据,但是我无法将收集到的数据传递给我的 Json 对象。我附上了代码和错误消息。

从 Firebase 获取文档的类
数据库服务.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 对象类
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);
}

错误信息

编译器消息:
lib/widgets/database_service.dart:17:76: 错误:无法将参数类型“String”分配给参数类型“Map”。
- “ map ”来自“飞镖:核心”。
querySnapshot.data.map((json) => UserCheck.fromJson(json));
^
lib/widgets/database_service.dart:17:67: 错误:“UserCheck”类型的值不能分配给“MapEntry”类型的变量。
-“UserCheck”来自“package:oast_app/widgets/auth_class.dart”(“lib/widgets/auth_class.dart”)。
-“MapEntry”来自“dart:core”。
querySnapshot.data.map((json) => UserCheck.fromJson(json));
^
lib/widgets/database_service.dart:17:47: 错误:无法将参数类型“MapEntry Function(String)”分配给参数类型“MapEntry Function(String, dynamic)”。
-“MapEntry”来自“dart:core”。
querySnapshot.data.map((json) => UserCheck.fromJson(json));

火基结构
enter image description here
^
collection('users').document('user.uid') 这是我试图获取的文档

最佳答案

假设您的集合名称为“tblcustomers”,

Stream<QuerySnapshot> stream = _db.collection("tblcustomers").snapshots();
jsonObject = Customers(error: false, errorCode: 0, Items: List<Customers_items>());
stream.forEach((QuerySnapshot element) {
if (element == null) return;

setState(() {
jsonObject.Items = element.documents.map((e) => Customers_items.fromJson(e.data)).toList();
});
});

关于Firebase Documentsnapshot 映射到 Flutter 中的 Json 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59295889/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com