Flutter 图像url可以';无法从firebase存储获取到firestore数据库
我尝试将图像存储到firebase存储,并尝试获取数据库的图像URL这些是代码。 这是我用来将图像上传到firebase存储的代码Flutter 图像url可以';无法从firebase存储获取到firestore数据库,flutter,dart,google-cloud-firestore,firebase-storage,Flutter,Dart,Google Cloud Firestore,Firebase Storage,我尝试将图像存储到firebase存储,并尝试获取数据库的图像URL这些是代码。 这是我用来将图像上传到firebase存储的代码 uploadNotice()async{ String fileName=basename(noticepic.path); final StorageReference firebaseStorageRef=FirebaseStorage.instance .ref().child('cisnotices/$fileName'); S
uploadNotice()async{
String fileName=basename(noticepic.path);
final StorageReference firebaseStorageRef=FirebaseStorage.instance
.ref().child('cisnotices/$fileName');
StorageUploadTask task = firebaseStorageRef.putFile(noticepic);
var dowurl = await (await task.onComplete).ref.getDownloadURL();
var url=dowurl.toString();
noticeProvider.changePhotoUrl(url).then((val){
print('photo url got');
}).catchError((e){
print(e);
});
}
NoticeProvider noticeProvider=NoticeProvider();
这是我用来更改图像URL的noticeprovider.dart
class NoticeProvider with ChangeNotifier {
final firestoreService=FirestoreService();
String _noticeId;
String _userName;
String _userPost;
String _date;
String _photoUrl;
var uuid=Uuid();
//getters
String get userName => _userName;
String get userPost => _userPost;
String get date => _date;
String get photoUrl => _photoUrl;
//setters
changeUserName(String value){
_userName=value;
notifyListeners();
}
changeUserPost(String value){
_userPost=value;
notifyListeners();
}
changeDate(String value){
_date=value;
notifyListeners();
}
changePhotoUrl(String value){
_photoUrl=value;
notifyListeners();
}
saveNotice(){
var newNotice=Notice(userName: userName,userPost: userPost,photoUrl: photoUrl,
date: date,noticeId: uuid.v4());
firestoreService.saveNotice(newNotice);
}
}
这是firestoreservice.dart的
class FirestoreService {
Firestore _db=Firestore.instance;
Future<void> saveNotice(Notice notice){
return _db.collection('notices').document(notice.noticeId).setData(notice.toMap());
}
}
class-FirestoreService{
Firestore _db=Firestore.instance;
未来储蓄通知(通知){
return _db.collection('notices').document(notice.noticeId).setData(notice.toMap());
}
}
图像保存在firebase存储中,但URL无法访问数据库。它总是显示“null”。尝试使用此选项上载图像/文件并获取其下载URL
final StorageReference storageReferencem = FirebaseStorage()
.ref()
.child("Users/${DateTime.now().millisecondsSinceEpoch}");
final StorageUploadTask uploadTaskm =
storageReferencem.putFile(croppedFile);
await uploadTaskm.onComplete;
await storageReferencem.getDownloadURL().then((url) {
URL=url;
});
很可能在保存通知时,下载URL尚未确定。第一个uploadNotice
代码段与其他代码段的关系如何?我在这里看不到对saveNotice
的任何调用。当用户按下上载按钮上载表单的所有详细信息时,我调用了saveNotice。除photoUrl外,所有其他详细信息均显示在数据库中