如何解决NoSuchMethodError: 在 null 上调用了方法“存在同步”
Future uploadFile() async {
String fileName = DateTime.now().toString();
StorageReference reference =
FirebaseStorage.instance.ref().child('$fileName');
StorageUploadTask uploadTask = reference.putFile(image);
StorageTaskSnapshot storageTaskSnapshot = await uploadTask.onComplete;
await storageTaskSnapshot.ref.getDownloadURL().then((downloadUrl) {
setState(() {
imageUrl = downloadUrl;
print("image path===>" + imageUrl);
});
},onError: (err) {
setState(() {});
toast(text: thisFileNotInImage);
});
}
解决方法
我认为 putFile
返回一个 Future
,所以做这样的事情,
StorageTaskSnapshot storageTaskSnapshot = await uploadTask()
我们在使用 await
时不需要 .then
,这里
await storageTaskSnapshot.ref.getDownloadURL().then
参考:https://dart.dev/codelabs/async-await
,看来您的 image
变量为空。在将图像传递到 Reference.putFile()
方法之前,确保图像不为空。
错误出现在这一行:
StorageUploadTask uploadTask = reference.putFile(image);
查看下面 Reference.putFile()
的实现。错误似乎来自断言。
UploadTask putFile(File file,[SettableMetadata? metadata]) {
assert(file.absolute.existsSync());
return UploadTask._(storage,_delegate.putFile(file,metadata));
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。