使用 Firebase 存储时未定义的类 StorageReference
Posted
技术标签:
【中文标题】使用 Firebase 存储时未定义的类 StorageReference【英文标题】:Undefined class StorageReference when using Firebase Storage 【发布时间】:2021-02-22 02:36:14 【问题描述】:我正在尝试上传图片,并且我的其他应用程序正在使用相同的过程,但是这里给出了这些错误,请您帮忙吗?
Future getImage1() async
// ignore: deprecated_member_use
var firstImage = await ImagePicker.pickImage(
source: ImageSource.gallery, imageQuality: 65);
setState(()
_image1 = firstImage;
);
【问题讨论】:
你加了firebase_storage?
是的,我做过 @PeterHaddad
【参考方案1】:
从版本 firebase_storage 5.0.1 开始:
您必须执行以下操作:
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
类已被删除,现在您必须使用 Reference
类。 UploadTask
扩展了Task
,它也实现了Future<TaskSnapshot>
。因此Future
类中的所有方法都可以在UploadTask
类上使用。
因此,要获取图像的url
,您需要使用then()
方法,该方法注册一个回调,以便在此未来完成时调用。
【讨论】:
【参考方案2】:正如@PeterHadad 所提到的,firebase 存储 5.0.1 中有一些重大变化。这些类已重命名,但保留了大部分旧功能。
也可以使用 .whenComplete() 获取下载地址如下-
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;
【讨论】:
uploadTask.whenComplete(() async url = await ref.getDownloadURL(); ).catchError((onError) print(onError); );【参考方案3】:从图库中选择图像并将其存储在图像文件夹中的 Firebase 存储中,如下所示:
final XFile? image = await ImagePicker().pickImage(source: source);
FirebaseStorage storage = FirebaseStorage.instance;
Reference ref = storage.ref().child("images/"+DateTime.now().toString());
UploadTask uploadTask = ref.putFile(File(image!.path));
uploadTask.then((res)
res.ref.getDownloadURL();
);
确保在 pubspec.yaml 文件中添加 image_picker 和 firebase_storage 作为依赖项。
【讨论】:
【参考方案4】:看起来您没有在 pubspec.yaml 文件中添加依赖项或 也许你没有在你的 dart 文件中导入包。这就是为什么你得到 错误。
查看软件包站点,例如如何使用: https://pub.dev/packages/firebase_storage
【讨论】:
以上是关于使用 Firebase 存储时未定义的类 StorageReference的主要内容,如果未能解决你的问题,请参考以下文章
使用 multer 将图像上传到 Firebase 存储问题
使用 react-native-firebase 在 Android 中关闭应用程序时未收到 fcm 消息
Firebase:使用预留托管 URL 时未创建 Firebase 应用“[DEFAULT]”
如何在 FirebaseStorage 中使用 StreamBuilder 来通知我的应用我的 Firebase 存储发生变化?在颤振中