Я бы добавил этот комментарий, но, к сожалению, не могу.
Вам нужно убедиться, что при возврате updateUserData()
вы присваиваете его значение переменной downloadUrl
, просто возвращая его в этот способ не сработает. Не знаю, есть ли у вас другой код для этого, но из того, что вы показали, вам понадобится что-то вроде этого.
//Maybe have this set to a default profile URL, incase something goes wrong?
String downloadUrl="";
Future<void> updateUserData(Project project) async {
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,
},
);
fileName = basename(project.image.path);
StorageReference firebaseStorageRef =
FirebaseStorage.instance.ref().child(fileName);
StorageUploadTask uploadTask = firebaseStorageRef.putFile(project.image);
taskSnapshot=await uploadTask.onComplete;
downloadUrl = taskSnapshot.ref.getDownloadURL().toString();
}
String returnUrl(){
//You probably don't need this now, as you can access downloadURL directly.
return downloadUrl;
}
Затем на вашем изображении:
Image.network(downloadUrl ...
//The rest of your styling
);
Надеюсь, это имеет смысл. По сути, вы не можете получить доступ к переменной другой функции из другой функции.
Либо это, либо я полностью ошибаюсь, но, как я уже сказал, я не вижу, чтобы downloadUrl
нигде определялся.