如何从 URL 中删除 Firebase 存储文件

How do I delete a Firebase Storage file from URL

如何使用 URL 作为参考获取从 Firebase 存储中删除文件的按钮。 URL 是使用 Firebase Storage getDownloadUrl 方法从名为 "fileUrl" 的 Firestore 集合字段中检索的。 当我尝试删除时,我收到一条错误消息并且我的应用程序崩溃了。

代码:

onPressed: () async {
             if (newsDataModel.get('fileUrl') != null) {
             await FirebaseStorage.instance.refFromURL(newsDataModel.get('fileUrl')).delete();
             } else {
               return;
             }
             await newsDataModel.reference.delete().then((value) => Navigator.pop(context));
}

错误:

_AssertionError ('package:firebase_storage/src/firebase_storage.dart': 
 Failed assertion: line 112 pos 12: 'url.startsWith('gs://') || url.startsWith('http')': 
 'a url must start with 'gs://' or 'https://')

意识到我犯了一个错误。一些集合的 fileUrl 字段是 empty/null,所以我删除了具有空值的集合,因此返回了错误。

新的更新代码:

onPressed: () async {
          try {
           if (hwDataModel.get('fileUrl') != null) {
            await FirebaseStorage.instance.refFromURL(hwDataModel.get('fileUrl')).delete()
            .then((value) => {
             hwDataModel.reference.delete().then((value) =>
              Navigator.pop(context))});
            } else if (hwDataModel.get('fileUrl') == null) {
               await hwDataModel.reference.delete().then(
                (value) => Navigator.pop(context));
             };
            } on FirebaseException catch (error) {
              Fluttertoast.showToast(
               msg: error.message.toString(),
               gravity: ToastGravity.TOP,
               backgroundColor: Colors.red,
               textColor: Colors.white);
             }
      },