Сначала я инициализировал url равным нулю, затем я добавляю данные в свой первый документ firestore, а затем изображение
String url='';
StorageTaskSnapshot storageTaskSnapshot;
Future<Project> updateUserData(Project project) async {
docref=await firestoreInstance.collection('projects').add(
{
'id': project.id,
'title': project.title,
'description': project.description,
'duration': project.duration,
'members': project.members,
'complexity': project.complexity,
'affordability': project.affordability,
'prequisites': project.prequisites,
'contact': project.contact,
'imageurl': 'https://bitsofco.de/content/images/2018/12/broken-1.png',
},
);
fileName = basename(project.image.path);
firebaseStorageRef =
FirebaseStorage.instance.ref().child(fileName);
uploadTask = firebaseStorageRef.putFile(project.image);
String photourl = await (await uploadTask.onComplete).ref.getDownloadURL();
url= photourl.toString(); //updating the null initialized url here
notifyListeners();
}
Затем я использую эту функцию для обновления imageurl в ранее сохраненном do c.
Future<Void> updatedata() async{
await Firestore.instance
.collection('projects')
.document(docref.documentID)
.updateData({
'imageurl': url,
});
notifyListeners();
}
Каждый раз, когда я вызываю эти две функции в другом виджете с помощью provide, r do c и изображение загружаются, но url возвращает null, и я не могу получить изображение.
Provider.of<DatabaseService>(context,listen: false).updateUserData(finalproj);
Provider.of<DatabaseService>(context,listen: false).updatedata();