我有一个返回Stream<int> uploadFile()
的API,其中int
代表上传的字节数,但是我想在完成后让它返回一个完全不同的类型 - 在此case,上传文件的URL String
。这可能吗?
Stream<int> uploadFile(File file) {
//...
}
答案 0 :(得分:2)
简短的回答是否,无法明确 。
您有几个选项,我会突出显示我的偏好设置:
返回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
等待上传完成。干杯!