使用Firebase Storage上传图片提示StorageTaskSnapshot类未定义如何解决
问题原因
StorageTaskSnapshot 类及配套的 onComplete 属性是 firebase_storage 插件V5及更早版本的旧API,在V9.0.0及之后的正式版本中,这套API已被官方移除,因此会出现类未定义的报错。
解决方案
方案1:适配新版API(推荐)
新版UploadTask本身已实现Future接口,直接await即可获取快照对象,类名已简化为TaskSnapshot,无需再调用onComplete属性。修正后的代码如下:Future<String> uploadPhoto(img) async { UploadTask task = FirebaseStorage.instance.ref().child("Posts Pictures").child("post_$postId.jpg").putFile(img); TaskSnapshot storageTaskSnapshot = await task; String downloadUrl = await storageTaskSnapshot.ref.getDownloadURL(); return downloadUrl; }代码修改完成后执行
flutter clean清理缓存,再执行flutter pub get拉取依赖,重启IDE即可消除报错。方案2:锁定旧版本插件(不推荐,仅用于兼容历史项目)
若项目暂时无法适配新版API,可以在pubspec.yaml中指定使用旧版本的firebase_storage:dependencies: firebase_storage: ^8.0.0版本锁定后重新拉取依赖即可正常使用旧API。
内容的提问来源于stack exchange,提问作者SAch
相关产品推荐
相关产品推荐

