【发布时间】:2021-08-06 18:19:28
【问题描述】:
我很难从 firebase 数据库中读取(和显示)数据。 我收到这个警告: type '(DocumentSnapshot) => GivitUser' 不是 type '(DocumentSnapshot) => GivitUser' 的子类型
我真的不知道自己做错了什么,我尝试从 DocumentSnapshot 转换为 DocumentSnapshot 但没有成功。 这是我的 database.dart 文件:
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:givit_app/models/givit_user.dart';
class DatabaseService {
final String uid;
DatabaseService({@required this.uid});
final CollectionReference userCollection =
FirebaseFirestore.instance.collection('Users');
Future<void> updateGivitUserData(
String email, String fullName, String password, int phoneNumber) async {
return await userCollection.doc(uid).set({
'Email': email,
'Full Name': fullName,
'Password': password,
'Phone Number': phoneNumber,
});
}
Future<GivitUser> getGivitUser(String uid) async {
return await userCollection.doc(uid).get().then((user) => user.data());
}
GivitUser _userDataFromSnapshot(DocumentSnapshot<GivitUser> snapshot) {
return GivitUser(
uid: uid,
email: snapshot.data().email,
fullName: snapshot.data().fullName,
phoneNumber: snapshot.data().phoneNumber,
);
}
Stream<GivitUser> get userData {
return userCollection.doc(uid).snapshots().map(_userDataFromSnapshot);
}
}
这是我尝试使用 database.dart 文件并呈现数据的地方:
Widget build(BuildContext context) {
GivitUser user = Provider.of<GivitUser>(context);
final DatabaseService db = DatabaseService(uid: user.uid);
return StreamBuilder<GivitUser>(
stream: db.userData,
builder: (context, snapshot) {
if (!snapshot.hasData) {
return Loading();
}
print('after getter');
print(snapshot.data);
GivitUser givitUser = snapshot.data;
return Scaffold(
....
....
....
在此先感谢,我将不胜感激:)
编辑:错误截图: ERROR SCREENSHOT
【问题讨论】:
-
您好。您能否发布您确切的完整错误或共享错误的屏幕截图。
-
是的,我在帖子末尾添加了截图:)
-
您能否检查以下答案是否解决了您的问题?
-
很遗憾,没有。我解释了为什么现在
标签: firebase flutter google-cloud-firestore stream-builder