Flutter编译报错:回调函数参数类型与目标参数类型不匹配
解决方法
这个错误是因为你传入FlutterDownloader.registerCallback的回调函数签名和插件要求的不匹配:插件期望的是void Function(String, int, int)类型的回调,但你提供的回调是void Function(String, DownloadTaskStatus, int)类型。
具体修正步骤:
调整回调函数的参数类型与顺序
按照插件要求,回调的正确签名应该是第一个参数为任务ID(String),第二个为状态码(int),第三个为进度(int)。你需要将downloadCallback修改为:void downloadCallback(String taskId, int statusCode, int progress) { // 将int类型的状态码转换为DownloadTaskStatus枚举 DownloadTaskStatus status = DownloadTaskStatus.values[statusCode]; // 这里执行你的业务逻辑,比如通知DownloadManager的处理逻辑 }适配自定义回调typedef(如果需要)
如果你需要使用自己定义的DownloadManagerCallback,可以在上述回调中转换参数后调用:// 假设你有一个类内部的回调处理方法 void _handleDownloadStatus(DownloadTaskStatus? status, int progress, String? taskId) { // 你的业务处理逻辑 } void downloadCallback(String taskId, int statusCode, int progress) { DownloadTaskStatus status = DownloadTaskStatus.values[statusCode]; _handleDownloadStatus(status, progress, taskId); }确认FlutterDownloader版本兼容性
检查pubspec.yaml中flutter_downloader的版本,确保它与Flutter 3.3.2、Dart 2.18.1兼容。如果版本不匹配,建议调整到适配的版本。
内容的提问来源于stack exchange,提问作者mo.aelmohaimen
相关产品推荐
相关产品推荐

