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
相关产品推荐
相关产品推荐

