【发布时间】:2020-06-25 13:32:03
【问题描述】:
我正在尝试使用 Firebase 创建应用。但是当我使用 updateProfile() 时,我得到了这个错误。没有为“Future”类型定义“updateProfile”方法。
Future updateProfilePic(picUrl) {
var userInfo = new UserUpdateInfo();
userInfo.photoUrl = picUrl;
final user = FirebaseAuth.instance.currentUser();
user.updateProfile(userInfo).then((val) {
FirebaseAuth.instance.currentUser().then((user) {
Firestore.instance
.collection('/Recycling Points')
.where('uid', isEqualTo: user.uid)
.getDocuments()
.then((docs) {
Firestore.instance
.document('/Recycling Points/${docs.documents[0].documentID}')
.updateData({'image': picUrl}).then((value){
print ('uploaded');
});
});
}).catchError((e) {
print(e);
});
});
}
编辑: 这是完整的代码。
导入包
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:smartbin/models/recycle.dart';
import 'package:smartbin/models/user.dart';
数据库服务
class DatabaseService {
final String uid;
DatabaseService({this.uid});
收藏参考
final CollectionReference recyclepointsCollection =
Firestore.instance.collection('Recycle Points');
Future updateUserData(String name, String email, String image,
int organicWaste, int nonOrganicWaste, int recycleWaste) async {
return await recyclepointsCollection.document(uid).setData({
'name': name,
'email': email,
'image': image,
'Organic Waste ': organicWaste,
'Non Organic Waste': nonOrganicWaste,
'Recycling Waste ': recycleWaste,
});
}
从快照中回收点列表
List<Recycle> _recycleListFromSnapshot(QuerySnapshot snapshot) {
return snapshot.documents.map((doc) {
return Recycle(
name: doc.data['name'] ?? '',
email: doc.data['email'] ?? '',
image: doc.data['image'] ?? '',
organicWaste: doc.data['organicWaste'] ?? 0,
nonOrganicWaste: doc.data['nonOrganicWaste'] ?? 0,
recycleWaste: doc.data['recycleWaste'] ?? 0);
}).toList();
}
更新个人资料图片代码
void updateProfilePic(picUrl) {
var userInfo = new UserUpdateInfo();
userInfo.photoUrl = picUrl;
final user = FirebaseAuth.instance.currentUser();
user.updateProfile(userInfo).then((val) {
FirebaseAuth.instance.currentUser().then((user) {
Firestore.instance
.collection('/Recycling Points')
.where('uid', isEqualTo: user.uid)
.getDocuments()
.then((docs) {
Firestore.instance
.document('/Recycling Points/${docs.documents[0].documentID}')
.updateData({'image': picUrl}).then((value){
print ('uploaded');
});
});
}).catchError((e) {
print(e);
});
});
}
快照中的用户数据
UserData _userDataFromSnapshot(DocumentSnapshot snapshot) {
return UserData(
uid: uid,
name: snapshot.data['name'],
email: snapshot.data['email'],
image: snapshot.data['image'],
organicWaste: snapshot.data['organicWaste'],
nonOrganicWaste: snapshot.data['nonOrganicWaste'],
recycleWaste: snapshot.data['recycleWaste']);
}
获取回收点流
Stream<List<Recycle>> get recyclePoints {
return recyclepointsCollection.snapshots().map(_recycleListFromSnapshot);
}
获取用户文档流
Stream<UserData> get userData {
return recyclepointsCollection
.document(uid)
.snapshots()
.map(_userDataFromSnapshot);
}
}
【问题讨论】:
标签: flutter