Flutter -> UploadTask 方法 OnComplete 不存在

Posted

技术标签:

【中文标题】Flutter -> UploadTask 方法 OnComplete 不存在【英文标题】:Flutter - > UploadTask method OnComplete does not exists 【发布时间】:2021-02-28 23:44:10 【问题描述】:

我看到很多练习都放在了 onComplete 但是我的代码是错误的

没有为“UploadTask”类型定义getter“onComplete”。 尝试导入定义“onComplete”的库,将名称更正为现有 getter 的名称,或定义名为“onComplete”的 getter 或字段

为什么??

void uploadImage() async 
    if (safeNeuralNetwork()) 
      //Subir imagen a firebase storage
      final Reference postImageRef =
          FirebaseStorage.instance.ref().child("Post Images");
      var timeKey = DateTime.now();
    
      print(sampleImage);
      UploadTask uploadTask =
          postImageRef.child(timeKey.toString() + ".jpg").putFile(sampleImage);
      var imageUrl =
          await (await uploadTask.onComplete).ref.getDownloadURL();
      url = imageUrl.toString();
      print(url);
      // Guardar el post en la bbdd
      saveToDatabase(url);
      //Regresar en Home
      Navigator.pop(context);
    
  

【问题讨论】:

【参考方案1】:

请改用 TaskSnapshot 类。你不需要 onComplete。

例子:

TaskSnapshot taskSnapshot = await uploadTask;

【讨论】:

【参考方案2】:

非常感谢它有效。这是最终代码

  print(sampleImage);
  UploadTask uploadTask =
      postImageRef.child(timeKey.toString() + ".jpg").putFile(sampleImage);
  print('aaa');
  print(uploadTask);
  var imageUrl = await (await uploadTask).ref.getDownloadURL();
  url = imageUrl.toString();
  print(url);
  // Guardar el post en la bbdd

【讨论】:

嗨琼。看起来你实现了我的建议。在这种情况下,Stack Overflow 习惯于通过投票和/或接受来确认该答案。另见What should I do when someone answers my question?【参考方案3】:

我认为您不再需要onComplete,只需awaitputFile 返回的Future

对于最新的代码示例,请始终查看FlutterFire documentation,例如:uploading a file。

【讨论】:

以上是关于Flutter -> UploadTask 方法 OnComplete 不存在的主要内容,如果未能解决你的问题,请参考以下文章

iOS:didCompleteWithError、didReceive 响应未由 URLSession.uploadTask 触发

uploadTask 成功后,ref.downloadURL() 不执行或返回 url

使用 NSURLSession UploadTask 暂停、恢复、取消上传任务

如何从 Firebase Storage 获取下载网址?

网址未定义。重构为新版本的 angularfire, angular

NSURLSession实现文件上传