【发布时间】:2020-04-03 21:14:25
【问题描述】:
我正在使用http 库来下载图像。
final client = http.Client();
final _response = await client.send(http.Request('GET', Uri.parse("my_url")));
听法一:(听法)
int downloaded = 0;
_response.stream.listen((value) {
// this gets called 82 times and I receive actual image size
downloaded += value.length;
});
收听方式二:(StreamBuilder小部件)
int downloaded = 0;
StreamBuilder<List<int>>(
stream: _response.stream,
builder: (_, snapshot) {
// this gets called 11 times and I receive around 1/10 actual image size
if (snapshot.hasData) downloaded += snapshot.data.length;
return Container();
},
);
问题是为什么StreamBuilder 的build() 方法没有在新数据到达时经常被调用,它完全违背了用作小部件的目的。
【问题讨论】: