Firebase Storage kullanılırken tanımlanmamış sınıf StorageReference

Nov 10 2020

Resim yüklemeye çalışıyorum ve aynı süreç diğer uygulamam için çalışıyor, ancak burada bu hataları veriyor, yardım edebilir misiniz?

Future getImage1() async {
    // ignore: deprecated_member_use
    var firstImage = await ImagePicker.pickImage(
        source: ImageSource.gallery, imageQuality: 65);
    setState(() {
      _image1 = firstImage;
    });
  }

Yanıtlar

4 PeterHaddad Nov 10 2020 at 14:16

Sürüm firebase_storage 5.0.1'den itibaren:

Aşağıdakileri yapmanız gerekir:

FirebaseStorage storage = FirebaseStorage.instance;
Reference ref = storage.ref().child("image1" + DateTime.now().toString());
UploadTask uploadTask = ref.putFile(_image1);
uploadTask.then((res) {
   res.ref.getDownloadURL();
});

StorageReference sınıf kaldırıldı ve şimdi sınıfı kullanmanız gerekiyor https://github.com/FirebaseExtended/flutterfire/blob/master/packages/firebase_storage/firebase_storage/lib/src/reference.dart. https://github.com/FirebaseExtended/flutterfire/blob/master/packages/firebase_storage/firebase_storage/lib/src/task.dart#L96genişler Task, bu da uygular Future<TaskSnapshot>. Bu nedenle, sınıftaki tüm yöntemler sınıf Futureüzerinde kullanılabilir UploadTask.

Bu nedenle url, görüntüyü elde etmek için, then()bu gelecek tamamlandığında çağrılacak bir geri aramayı kaydeden yöntemi kullanmanız gerekir .

1 AkashC.A Nov 10 2020 at 16:00

@PeterHadad tarafından belirtildiği gibi, firebase depolama 5.0.1'de birkaç önemli değişiklik var. Sınıflar yeniden adlandırıldı, ancak eski işlevlerinin çoğunu korudu.

İndirme URL'sini aşağıdaki gibi almak için .whenComplete () öğesini de kullanabilirsiniz.

uploadPic(File _image1) async {
   FirebaseStorage storage = FirebaseStorage.instance;
   String url;
   Reference ref = storage.ref().child("image1" + DateTime.now().toString());
   UploadTask uploadTask = ref.putFile(_image1);
   uploadTask.whenComplete(() {
      url = ref.getDownloadURL();
   }).catchError((onError) {
    print(onError);
    });
   return url;
}
UmarCalcuttawala Nov 10 2020 at 15:56

Görünüşe göre pubspec.yaml dosyasına bağımlılık eklememişsiniz veya dart dosyanıza paketi içe aktarmamış olabilirsiniz. Bu yüzden hata alıyorsun.

Örneğin nasıl kullanılacağı konusunda paket sitesine bakın: https://pub.dev/packages/firebase_storage