You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter删除目录存储的语音文件报_File不是String子类型错误怎么解决

错误原因

报错指向代码中Directory(widget.file.elementAt(widget.index))这一行:
widget.file列表存储的是_File类型的文件对象,而Directory构造函数要求传入字符串类型的路径,直接传入File对象就会触发类型不匹配的错误。

修复方案

有两种可选的修复方式,推荐第二种更适配单文件删除场景:

  • 方案1:保留原有写法,先从File对象中提取路径再传入构造函数
    仅修改对应行代码即可:
    Directory appDirec = Directory(widget.file.elementAt(widget.index).path);
    
  • 方案2:直接调用File对象的删除方法,无需额外封装Directory(更简洁)
    完整修改后的函数代码如下:
    _delete() {
      //audioPlayer.delete();
      print(widget.index);
      File targetFile = widget.file.elementAt(widget.index);
      targetFile.delete(recursive: true);
      print(targetFile.path);
      setState(() {
        position = Duration();
        widget.file.removeAt(widget.index);
        _icon = Icons.delete;
        _color = Colors.deepOrangeAccent;
      });
    }
    

额外优化点:原代码中widget.file.remove(widget.file.elementAt(widget.index))可以替换为widget.file.removeAt(widget.index),直接按索引删除不需要先取元素再匹配,效率更高也避免重复查找。

内容的提问来源于stack exchange,提问作者jiji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 16:57:01