【发布时间】:2021-01-05 12:30:28
【问题描述】:
我用下面的代码定义了一个函数类型
typedef DownloadCallback = Future<StreamedResponse> Function<T>(
BuildContext context,
T fileIdentifier,
);
并创建了一个类似类型的函数
Future<StreamedResponse> publicFileDownloader(
BuildContext context,
String url,
) {
final request = Request('GET', Uri.parse(url));
return Client().send(request);
}
但我有以下错误
参数类型“Future Function(BuildContext, String)”不能分配给参数类型“Future Function(BuildContext, T)”。
如何在不使用dynamic 类型的情况下修复错误?
【问题讨论】:
-
你能举一个完整的例子来说明这个问题吗? (例如,您如何使用
publicFileDownloader方法和DownloadCallback类型)。 -
在另一个类中我有一个
final DownloadCallback downloader在构造函数中赋值,你可以使用final DownloadCallback downloader = publicFileDownloader;来重现错误 -
您的问题是您缺少类型的通用部分。当您写
final DownloadCallback时,您实际上是在说final DownloadCallback<dynamic>。尝试使用final downloader = publicFileDownloader;或final DownloadCallback<String> downloader = publicFileDownloader; -
其实你也应该定义你的 DownloadCallback 为:
typedef DownloadCallback<T> = Future<String> Function( String context, T fileIdentifier, );
标签: dart