Dart 错误:参数类型';(文件)和#x2192;未来<;动态>';can';不能分配给参数类型';(动态)和#x2192;未来者<;动态>';
我试图从以下方面编译示例: 我得到了下面的Dart编译错误 错误:参数类型为“(文件)→ 无法分配“未来” 至参数类型“(动态)→ 未来者'。 (参数类型不可分配于lib/google\u api\u rest/main.dart:49) 从以下代码:Dart 错误:参数类型';(文件)和#x2192;未来<;动态>';can';不能分配给参数类型';(动态)和#x2192;未来者<;动态>';,dart,flutter,future,Dart,Flutter,Future,我试图从以下方面编译示例: 我得到了下面的Dart编译错误 错误:参数类型为“(文件)→ 无法分配“未来” 至参数类型“(动态)→ 未来者'。 (参数类型不可分配于lib/google\u api\u rest/main.dart:49) 从以下代码: // Download a file from Google Drive. Future downloadFile(drive.DriveApi api, Client client,
// Download a file from Google Drive.
Future downloadFile(drive.DriveApi api,
Client client,
String objectId,
String filename) {
return api.files.get(objectId).then((drive.File file) {
// The Drive API allows one to download files via `File.downloadUrl`.
return client.readBytes(file.downloadUrl).then((bytes) {
var stream = new File(filename).openWrite()..add(bytes);
return stream.close();
});
});
我使用Android Studio 3.2.1、Dart Idk 2.1.0-dev.9.4和Flatter 1.0.0稳定通道
我对飞镖和颤栗还不熟悉,
有人能帮我解决这个问题吗?api.files.get()
静态声明为。没有泛型的纯Future
隐含为Future
。调用采用函数(T)
,这意味着函数(动态)
。您正在传递一个函数(文件)
您可能知道未来的将始终解析为文件
,但静态编译器不知道这一点
理想情况下,api.files.get()
的签名应该更新,以指示它返回一个未来的。同时,您可以解决以下问题:
return api.files.get(objectId).then((result) {
var file = result as drive.File;
// The Drive API allows one to download files via `File.downloadUrl`.
return client.readBytes(file.downloadUrl).then((bytes) {
var stream = new File(filename).openWrite()..add(bytes);
return stream.close();
});