Classe indefinida StorageReference ao usar o Firebase Storage
Estou tentando fazer upload de imagem, e o mesmo processo está funcionando para meu outro aplicativo, mas aqui dá esses erros, você pode cara, por favor me ajude?
Future getImage1() async {
// ignore: deprecated_member_use
var firstImage = await ImagePicker.pickImage(
source: ImageSource.gallery, imageQuality: 65);
setState(() {
_image1 = firstImage;
});
}
Respostas
A partir da versão firebase_storage 5.0.1:
Você deve fazer o seguinte:
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 a classe foi removida e agora você tem que usar a classe 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#L96estende Task, que também implementa Future<TaskSnapshot>. Portanto, todos os métodos que estão na classe Futurepodem ser usados na classe UploadTask.
Portanto, para obter o resultado urlda imagem, você precisa usar o then()método que registra um retorno de chamada a ser chamado quando esse futuro terminar.
Conforme mencionado por @PeterHadad, existem algumas mudanças importantes no armazenamento do Firebase 5.0.1. As classes foram renomeadas, mas mantêm a maioria de suas antigas funcionalidades.
Você também pode usar .whenComplete () para obter o URL de download da seguinte forma-
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;
}
Parece que você não adicionou dependência no arquivo pubspec.yaml ou talvez não importou o pacote em seu arquivo DART. É por isso que você está recebendo um erro.
Verifique o site do pacote, por exemplo, sobre como usar: https://pub.dev/packages/firebase_storage