问题描述
前辈,我想更新用户的当前个人资料图片 我已成功将图片上传到 Firebase 存储,但现在无法将该图片的网址自动分配给 firestore 文档。我在过去 3 天里一直在尝试这个,但无法实现我的目标。
这是我在 Cloud Firestore 中的文档结构。
doc structure in cloud firestore
我将图片上传到 Firestore 的代码
class StorageRepo{ FirebaseStorage storage = FirebaseStorage(
storageBucket: "myrepolink");
Future<String>uploadfile(File image) async{
var user = FirebaseAuth.instance.currentUser;
var storageRef = storage.ref().child('user/profile/${user.uid}');
user.uid;
UploadTask uploadTask = storageRef.putFile(image);
String downloadUrl = (await uploadTask).ref.getDownloadURL().toString();
return downloadUrl }}
我的图片显示代码
GestureDetector(
onTap: ()async {
File image = await ImagePicker.pickImage(source: ImageSource.gallery);
await UserController().uploadProfileImage(image);
setState(() {});
},child: Center(
child: profileImage == null
? CircleAvatar(
radius: 50.0,backgroundColor: redColor,child: Icon(Icons.camera_alt,color: Colors.white,),)
: CircleAvatar(
radius: 50.0,backgroundImage: NetworkImage(profileImage),
我的 UserController 类
import 'package:brain_dareus_ministries/models/user_model.dart';
import 'package:brain_dareus_ministries/models/auth.dart';
import 'dart:io';
import 'storageController.dart';
class UserController {OurUser _currentUser;
AuthRepo _authRepo =AuthRepo();
Future init;
UserController() {
init = initUser();
}
Future<OurUser> initUser() async {
_currentUser = await _authRepo.getUser();
return _currentUser;
}
OurUser get currentUser => _currentUser;
UploadProfile 图片类
uploadProfileImage(File image) async {
_currentUser.profileImage = await StorageRepo().uploadfile(image); }}
在 AuthRipo 中获取用户类
final FirebaseAuth _auth = FirebaseAuth.instance;
Future<OurUser> getUser() async {
var firebaseUser = await _auth.currentUser;
return OurUser(uid: firebaseUser.uid,displayName: firebaseUser.displayName);
}
我们的用户类
class OurUser{
String uid;
String displayName;
String email;
String mobileNumber;
String profileImage;
String password;
OurUser({
this.displayName,this.uid,this.email,this.mobileNumber,this.profileImage,this.password
});
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)