Dart定义泛型函数
我使用以下代码来定义函数类型Dart定义泛型函数,dart,Dart,我使用以下代码来定义函数类型 typedef DownloadCallback=未来函数( 构建上下文上下文, 文件标识符, ); 并创建了一个与类型类似的函数 Future publicFileDownloader( 构建上下文上下文, 字符串url, ) { final request=request('GET',Uri.parse(url)); 返回客户端()。发送(请求); } 但是我有以下错误 无法将参数类型“Future Function(BuildContext,String)
typedef DownloadCallback=未来函数(
构建上下文上下文,
文件标识符,
);
并创建了一个与类型类似的函数
Future publicFileDownloader(
构建上下文上下文,
字符串url,
) {
final request=request('GET',Uri.parse(url));
返回客户端()。发送(请求);
}
但是我有以下错误
无法将参数类型“Future Function(BuildContext,String)”分配给参数类型“Future Function(BuildContext,t)”
如何在不使用
动态类型的情况下修复错误?这是另一种情况,尝试指定类型会使Dart更加混乱。问题在于:
final DownloadCallback downloader = publicFileDownloader;
final DownloadCallback<String> downloader = publicFileDownloader;
typedef DownloadCallback<T> = Future<StreamedResponse> Function(
BuildContext context,
T fileIdentifier,
);
实际上是指:
final DownloadCallback<dynamic> downloader = publicFileDownloader;
final downloaddcallback downloader=publicFileDownloader;
因此,您应该做以下几点:
final DownloadCallback downloader = publicFileDownloader;
final DownloadCallback<String> downloader = publicFileDownloader;
typedef DownloadCallback<T> = Future<StreamedResponse> Function(
BuildContext context,
T fileIdentifier,
);
final downloaddcallback downloader=publicFileDownloader;
下一个问题是在声明typedef时错误使用泛型。您真正想要的是以下内容:
final DownloadCallback downloader = publicFileDownloader;
final DownloadCallback<String> downloader = publicFileDownloader;
typedef DownloadCallback<T> = Future<StreamedResponse> Function(
BuildContext context,
T fileIdentifier,
);
typedef DownloadCallback=未来函数(
构建上下文上下文,
文件标识符,
);
因此,完整的代码是:
typedef DownloadCallback<T> = Future<StreamedResponse> Function(
BuildContext context,
T fileIdentifier,
);
Future<StreamedResponse> publicFileDownloader(
BuildContext context,
String url,
) {
final request = Request('GET', Uri.parse(url));
return Client().send(request);
}
final DownloadCallback<String> downloader = publicFileDownloader;
typedef DownloadCallback=未来函数(
构建上下文上下文,
文件标识符,
);
未来publicFileDownloader(
构建上下文上下文,
字符串url,
) {
final request=request('GET',Uri.parse(url));
返回客户端()。发送(请求);
}
final DownloadCallback downloader=publicFileDownloader;
你能给出一个完整的例子来说明这个问题吗?(例如,如何使用publicFileDownloader
方法和DownloadCallback
类型)。在另一个类中,我有一个在构造函数中分配的final DownloadCallback downloader
,您可以使用final DownloadCallback downloader=publicFileDownloader代码>要复制错误,您的问题是缺少类型的泛型部分。当您编写final DownloadCallback
时,实际上是在说final DownloadCallback
。尝试使用final downloader=publicFileDownloader
或最终下载callback downloader=publicFileDownloader实际上,您还应该将DownloadCallback定义为:typedef DownloadCallback=Future函数(字符串上下文,T fileIdentifier,)代码>