Dart 未捕获错误:类';int';没有实例getter';长度';

Dart 未捕获错误:类';int';没有实例getter';长度';,dart,google-drive-api,google-apis-explorer,Dart,Google Drive Api,Google Apis Explorer,我是否可能错误地创建流和媒体实例? 修改后,我试图将已存储的.docx、.xlsx等文件转换为相应的Google驱动器对应文件 下面的代码 import 'dart:async'; import 'dart:io'; import 'package:http/http.dart' show Client; import 'package:googleapis/common/common.dart' show Media, DownloadOptions; import 'package:goo

我是否可能错误地创建流和媒体实例?

修改后,我试图将已存储的.docx、.xlsx等文件转换为相应的Google驱动器对应文件

下面的代码

import 'dart:async';
import 'dart:io';

import 'package:http/http.dart' show Client;
import 'package:googleapis/common/common.dart' show Media, DownloadOptions;
import 'package:googleapis/drive/v2.dart' as drive;
import 'package:path/path.dart' as path;

Future convertFile(drive.DriveApi api, 
                    Client client, 
                    String objectId) {
  var completer = new Completer();
  api.files.get(objectId).then((drive.File file) {
    var fileName = path.basenameWithoutExtension(file.title);
    var parents = file.parents;

    client.readBytes(file.downloadUrl).then((bytes) {
      var driveFile = new drive.File()
      ..title = fileName
      ..mimeType = 'application/vnd.google-apps.document'
      ..parents = parents;
      api.files.insert(driveFile)
      .then((driveFile){
        var byteList = bytes.toList();
        var stream = new Stream.fromIterable(byteList);
        var media = new Media(stream, byteList.length);
        api.files.update(new drive.File(), driveFile.id, uploadMedia: media)
        .then((drive.File f){
          stream.close().whenComplete((){
            api.files.delete(objectId)
            .then((_){
              completer.complete(true);
              print("Converted ${f.id}");
            });
          });
        });
      });
    });
  });
  return completer.future;
}
导致以下错误

Unhandled exception:
Uncaught Error: Class 'int' has no instance getter 'length'.

NoSuchMethodError: method not found: 'length'
Receiver: 80
Arguments: []
Stack Trace:
#0      Object.noSuchMethod (dart:core-patch/object_patch.dart:45)
#1      Base64Encoder.bind.onData (package:googleapis/src/common_internal.dart:325:42)
#2      _RootZone.runUnaryGuarded (dart:async/zone.dart:1093)
#3      _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:341)
#4      _IterablePendingEvents.handleNext (dart:async/stream_impl.dart:549)
#5      _PendingEvents.schedule.<anonymous closure> (dart:async/stream_impl.dart:671)
#6      _asyncRunCallbackLoop (dart:async/schedule_microtask.dart:41)
#7      _asyncRunCallback (dart:async/schedule_microtask.dart:48)
#8      _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:84)
#9      _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:131)

#0      _rootHandleUncaughtError.<anonymous closure> (dart:async/zone.dart:886)
#1      _asyncRunCallbackLoop (dart:async/schedule_microtask.dart:41)
#2      _asyncRunCallback (dart:async/schedule_microtask.dart:48)
#3      _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:84)
#4      _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:131)
未处理的异常:
未捕获错误:类“int”没有实例获取程序“length”。
NoSuchMethodError:找不到方法:“长度”
收件人:80
论点:[]
堆栈跟踪:
#0 Object.noSuchMethod(省道:核心补片/对象补片。省道:45)
#1 Base64Encoder.bind.onData(包:googleapis/src/common_internal.dart:325:42)
#2_RootZone.runUnaryGuarded(dart:async/zone.dart:1093)
#3 _BufferingStreamSubscription._sendData(dart:async/stream\u impl.dart:341)
#4_IterablePendingEvents.handleNext(dart:async/stream_impl.dart:549)
#5 _PendingEvents.schedule。(dart:async/stream\u impl.dart:671)
#6\u asyncRunCallbackLoop(dart:async/schedule\u microtask.dart:41)
#7\u asyncRunCallback(dart:async/schedule\u microtask.dart:48)
#8 _运行挂起立即回调(dart:隔离补丁/隔离补丁。dart:84)
#9 RawReceivePortImpl.handleMessage(dart:隔离补丁/隔离补丁。dart:131)
#0_roothandleuncaughtror。(dart:async/zone.dart:886)
#1\u asyncRunCallbackLoop(dart:async/schedule\u microtask.dart:41)
#2\u asyncRunCallback(dart:async/schedule\u microtask.dart:48)
#3 _运行挂起立即返回(dart:隔离补丁/隔离补丁。dart:84)
#4 RawReceivePortImpl.handleMessage(dart:隔离补丁/隔离补丁。dart:131)

媒体构造函数需要一个
,而您的代码正在提供一个
。要解决此问题,只需更换此行:

 var stream = new Stream.fromIterable(byteList);
作者:


媒体构造函数需要一个
,而您的代码正在提供一个
。要解决此问题,只需更换此行:

 var stream = new Stream.fromIterable(byteList);
作者:


你能找出,这个错误到底出现在哪里吗?你能找出,这个错误到底出现在哪里吗?它起作用了!谢谢你@luizmineo!呃,有些解决方案是如此简单,以至于我们错过了它们。我为其他人创建了这个要点供将来参考:。它成功了!谢谢你@luizmineo!呃,有些解决方案是如此简单,以至于我们错过了它们。我为其他人创建了此要点,以供将来参考:。