我有一个返回Stream<int> uploadFile()
的API,其中int
表示上载的字节数,但是,我希望在完成后使其返回完全不同的类型-在这种情况下,是上载文件URL的String
。那可能吗?
Stream<int> uploadFile(File file) {
//...
}
最佳答案
简短的答案是,不,不可能明确地做到这一点。
您有几种选择,我将重点介绍我的偏好:
dynamic
或Object
,并(向用户)指示发出的事件在进行中将是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/