gpt4 book ai didi

dart - 是否有可能在Stream上返回与onComplete不同的对象?

转载 作者:行者123 更新时间:2023-12-03 03:26:44 25 4
gpt4 key购买 nike

我有一个返回Stream<int> uploadFile()的API,其中int表示上载的字节数,但是,我希望在完成后使其返回完全不同的类型-在这种情况下,是上载文件URL的String。那可能吗?

Stream<int> uploadFile(File file) {
//...
}

最佳答案

简短的答案是,不,不可能明确地做到这一点。

您有几种选择,我将重点介绍我的偏好:

  • 返回dynamicObject,并(向用户)指示发出的事件在进行中将是int类型,并且String一旦完成。这依赖于进行许多is检查,我个人不会选择此选项:
    uploadFile().listen((progress) {
    if (progress is int) {

    } else if (progress is String) {

    }
    });
  • 返回包装器类,例如UploadProgress:
    abstract class UploadProgress {
    int get progressPercent;
    String get uploadUrl;
    }

    Stream<UploadProgress> uploadFile() { ... }
  • 我的偏好:返回一个包装器类,该类公开Stream:
    abstract class FileUpload {
    Stream<int> get progress;
    Future<String> get url;
    }

    FileUpload uploadFile() { ... }

  • 最后一个选项可以使您清楚地知道您可以收听 progress字段,或者只是等待 url以等待上传完成。干杯!

    关于dart - 是否有可能在Stream上返回与onComplete不同的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50108153/

    25 4 0