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

Flutter_downloader下载持续失败 报MalformedURLException异常

问题根因

核心报错java.net.MalformedURLException: no protocol的触发原因非常明确:传入flutter_downloader原生层的URL字符串首尾额外带了单引号。
从异常栈打印的错误入参看,实际传给Java URL构造方法的参数是'https://tooxclusive.com/wp-content/uploads/2022/03/Asake-Sungba.mp3',字符串第一个字符是单引号而非协议头起始字符,Java底层解析时无法识别出https协议段,直接抛出异常。
你代码注释里标注的URL本身是合法的,问题出在_url变量的实际赋值:大概率是接口返回值自带单引号、JSON解析时错误拼接了引号、或者字符串处理时误加了引号包裹,和插件本身逻辑无关。

排查方法
  • 在调用FlutterDownloader.enqueue前打印_url的实际内容,用边界标记符包裹就能快速看出有没有多余字符:
// 用>>> <<<包裹url,首尾多余字符一眼可见
debugPrint('待传入下载url: >>>$_url<<<');

如果打印结果是>>>'https://xxx.mp3'<<<,即可确认是多余单引号导致的问题。

  • 额外检查url首尾是否存在不可见空格、换行符,这类字符也可能导致URL解析失败。
修复方案

传入下载方法前先清洗URL字符串,移除首尾多余的引号、空白字符即可:

// 去除首尾空白,再移除首尾的单引号
final validUrl = _url.trim().replaceFirst(RegExp(r"^'"), '').replaceFirst(RegExp(r"'$"), '');

await FlutterDownloader.enqueue(
  url: validUrl,
  savedDir: '/storage/emulated/0/Download',
  showNotification: true,
  saveInPublicStorage: true,
);

如果业务场景中URL可能被双引号包裹,调整正则同时匹配首尾的单/双引号即可。
修复后重新触发下载,查看日志中DownloadWorker打印的url参数不再带多余引号,下载流程会正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:45:40