将图像从颤振上传到火力基地(没有任何反应)
Posted
技术标签:
【中文标题】将图像从颤振上传到火力基地(没有任何反应)【英文标题】:Uploading image from flutter to firebase (nothing happens) 【发布时间】:2021-08-05 21:56:50 【问题描述】:我尝试将图像从颤振上传到 Firebase 存储,但是当我尝试这样做时,没有任何变化。我已经从 firebase 连接到颤振,当我运行代码时出现此错误:[ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: [core/no-app] No Firebase App '[DEFAULT]' has been created - call Firebase.initializeApp()
。此外,当我执行代码时,showDialog 方法不会弹出(这是一个弹出屏幕)。在此先感谢:)
class _MyHomePageState extends State<MyHomePage>
Future <File> file;
//final storage = FirebaseStorage.instance;
openGatePhoto() async
final file = await ImagePicker.pickImage(source: ImageSource.gallery);
var reference = FirebaseStorage.instance.ref().child('last_image/car5');
await reference.putFile(file);
//var snapshot = await storage.ref().child('last_image/car5.png').putFile(file).onComplete;
showDialog(
context: context,
builder: (context) => CustomDialogOpen(
title: "Gates are open",
description:
"Licence plate numbers have been successfully stored in the database",
));
我尝试修复@jitesh 提到的代码,但仍然是同样的错误,代码:
final file = await ImagePicker.pickImage(source: ImageSource.gallery);
Reference reference =
FirebaseStorage.instance.ref().child('last_image/car5');
FirebaseStorage storage = FirebaseStorage.instance;
UploadTask uploadTask = reference.putFile(file);
uploadTask.then((res)
res.ref.getDownloadURL().then(
(value) => print("Done: $value"),
);
);
【问题讨论】:
【参考方案1】:使用StorageTaskSnapshot
并等待上传完成,其余代码不言自明。
Future uploadImageToFirebase(BuildContext context) async
final file = await ImagePicker.pickImage(source: ImageSource.gallery);
var reference = FirebaseStorage.instance.ref().child('last_image/car5');
StorageUploadTask uploadTask = reference.putFile(file);
StorageTaskSnapshot taskSnapshot = await uploadTask.onComplete;
taskSnapshot.ref.getDownloadURL().then(
(value) => print("Done: $value"),
);
另外,您似乎还没有初始化 firebase,在基本小部件中添加以下代码
@override
void initState()
super.initState();
setUpFirebase();
void setUpFirebase() async
await Firebase.initializeApp();
对于新的ImagePicker
API,获取这样的文件
final picker = ImagePicker();
final pickedFile = await picker.getImage(source: ImageSource. gallery);
File image = new File(pickedFile.path);
【讨论】:
对于 StorageUploadTask 和 StorageTaskSnapshot 它显示它希望我创建一个类/方法 说错误:'StorageUploadTask' 不是类型。 StorageUploadTask uploadTask = reference.putFile(file); 你需要初始化firebase,看看编辑后的答案。 初始化后,它工作了。谢谢你:) 希望在这里提问还为时不晚。我收到错误:参数类型“PickedFile?”不能分配给参数类型'文件'一切都是一样的。 final pickFile =... 错误就在这里 UploadTask uploadTask = reference.putFile(pickedFile);在pickFile上以上是关于将图像从颤振上传到火力基地(没有任何反应)的主要内容,如果未能解决你的问题,请参考以下文章