Flutter 颤振:在Firebase存储中删除文件之前检查该文件

Flutter 颤振:在Firebase存储中删除文件之前检查该文件,flutter,firebase-storage,Flutter,Firebase Storage,我有一个从Firebase存储中删除文件的功能,如下所示: void _deleteFileFromStorage(String fileName) async { await FirebaseStorage.instance.ref().child(fileName).delete(); } 删除该文件是成功的,但当要删除的文件在Firebase存储中不存在时,将导致错误,并将堆栈在删除函数中(\u deleteFileFromStorage),并且不会运行(传递)到函数/下一个进程,如

我有一个从Firebase存储中删除文件的功能,如下所示:

void _deleteFileFromStorage(String fileName) async {
  await FirebaseStorage.instance.ref().child(fileName).delete();
}
删除该文件是成功的,但当要删除的文件在Firebase存储中不存在时,将导致错误,并将堆栈在删除函数中(
\u deleteFileFromStorage
),并且不会运行(传递)到函数/下一个进程,如下所示:

onPressed: () async {
  await _progressDialog.update(message: 'Deleted Resume...');
  await _progressDialog.show();
  await _deleteFileFromStorage(widget.attachmentsEntity.name); // If the file doesn't exist, the process stuck in here
  await _deleteDataFromFirebase(); // This function and below will not run because it causes an error in the delete function (the file does not exist)
  if (widget.resume.length == 1) {
    setState(() {
      choices.add(Choice(title: RESUME, index: 0));
    });
  }
  await _progressDialog.hide();
  Navigation.back(context);
},
因此,问题是:

  • 在执行
    \u deleteFileFromStorage
    删除文件之前,是否可以先检查文件
  • 或者,如果文件在Firebase存储中不存在,我如何通过错误并继续运行下一个进程
  • 试试这个:

    var file = storageRef
          .child('fileName');
    
          if(file != null){
              storageRef
          .child('fileName').delete();
          }else{
           print('Does not exist');
          }
    
    你可以打电话给推荐人。如果完成并返回元数据对象,则该文件存在。如果产生错误,则可以假定该文件不存在,或者客户端没有删除该文件的权限


    就个人而言,我只需从
    delete()
    记录错误,然后继续。

    我通过在
    \u deleteFileFromStorage
    上使用
    try
    catch
    修复了它。因此,当文件不存在时(错误),它将继续运行下一个进程。如果你们有任何选择来回答这个问题,请回答1号或2号。只需一个头:)

    这行不通。它只是检查引用对象是否为null。这并不意味着该文件存在于云存储中。文件名在存储中如何,它将如何不存在。您可以构建对不存在的文件的引用。这实际上就是你执行上传的方式。引用对象只是一个路径,而不是一个实际的文件。链接现在是404'd-更新的链接:截止到现在不工作截止到现在不工作