api.files.get()
статически объявлено как , возвращает Future
.Голый Future
без общего является неявным Future<dynamic>
.Вызов Future<T>.then
занимает Function(T)
, что означает Function(dynamic)
.Вы передаете Function(File)
.
Возможно, вы знаете, что Future
всегда будет преобразовываться в File
, но статически компилятор этого не знает.
В идеалеподпись api.files.get()
должна быть обновлена, чтобы указать, что она возвращает Future<File>
.В то же время вы можете обойти это:
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();
});