Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 图像url可以';无法从firebase存储获取到firestore数据库_Flutter_Dart_Google Cloud Firestore_Firebase Storage - Fatal编程技术网

Flutter 图像url可以';无法从firebase存储获取到firestore数据库

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

我尝试将图像存储到firebase存储,并尝试获取数据库的图像URL这些是代码。 这是我用来将图像上传到firebase存储的代码

   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外,所有其他详细信息均显示在数据库中