Hüseyin ikinci postunda paylaştığın , değere atama işleminden sonra Firestorage’a yükleme işlemini başarılı yapabiliyorum çok teşekkür ederim.
En son bu şekilde bir method oluşturdum.
Future<String> pushPostFireStorage(image) async {
File _file = image[0] as File;
var ref = FirebaseStorage.instance.ref().child("path");
var uploadTask = ref.putFile(_file);
var storageTaskSnapshot = await uploadTask.onComplete;
var url = await storageTaskSnapshot.ref.getDownloadURL();
print(url.toString());
return url.toString();
}
ve bu methodu valueTransformer içerisinde aşağıdaki şekilde çağırıyorum.
valueTransformer: (image) async {
await pushPostFireStorage(image);
return image.toString();
},
Bu kısımda şu an problemim firestore’a bu oluşan URL’i yazamıyorum.
Yukarda paylaştığım şekilde kodu çalıştırdığımda consol üzerinde aşağıdaki gibi bir hata çıktısı veriyor.
resimler attribute’une atanan değer alanda aslında link olması gerekli fakat “Instance of ‘Future<String>’”
diye bir değer var.
https://paste.ubuntu.com/p/2rbymqpK3k/
Bu hatada sıralamada bir problem yaptığımı düşünüyorum, çünkü consol’da firestorage’a yükleme işlemi sonradan yapılıyor, async ve await işlemlerine dikkat ettiğimi düşünüyorum fakat, paste üzerinden paylaştığım çıktıda da görüleceği üzere oluşan URL’i sonradan alıyorum.
Bunu düzelmek için sanıyorum resim yüklendiğinde, yani form’u kaydet demeden önce bu URL’i resimler değerine atamam lazım. Bir diğer seçenek form’u kaydet işleminde bekletip URL’i resimler değerine atamam gerekiyor, fakat başarılı olamadım. ilgili kod’un tam halini aşağıda paylaşıyorum.
https://paste.ubuntu.com/p/RdDNCxmKt9/