将图像从颤振上传到火力基地(没有任何反应)

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

以上是关于将图像从颤振上传到火力基地(没有任何反应)的主要内容,如果未能解决你的问题,请参考以下文章

我必须从哪里找到 DatabaseEvent 类? (颤振)(火力基地)

无法从颤振网络将图像上传到 Firebase 存储

从颤振上传图像到firebase存储

为啥这在更改用户名时不会自行呈现。从火力基地得到反应

颤振和火力基地和子集合

为啥从 firebase 控制台发送的通知能够绕过 android 后台任务限制? - 反应原生火力基地 -