随着新dart:io库的发布,为了从HttpRequest读取数据,我们现在需要:
听取正文处理数据并通知其完成情况。
为了实现这一目标,我一直在使用类似于以下的内容来获取请求中的所有数据(取自dart:io测试):
List<int> body = new List<int>();
request.listen(body.addAll, onDone: () {
var str = new String.fromCharCodes(body);
// Now do something with the string of data
});
是否有某种方法可以使用transform和/或StringDecoders来提供构造结果。我能想到的唯一方法是,我仍然需要创建一个StringBuffer并使用writeAll来确保所有数据在它不是一次全部到达的情况下传递,并且在使用缓冲区中的字符串之前仍然调用onDone。
所以我猜最终的问题是:是否有某些方法可以使用HttpRequest(或者所有实际的任何Stream)而无需缓冲/构建结果,只需传递一个接收整个内容的回调或处理程序?
答案 0 :(得分:0)
我没试过这个,但我认为你应该可以使用StringDecoder,toList()和join()来获取整个身体:
request.transform(new StringDecoder()).toList().then((data) {
var body = data.join('');
print(body);
}