我正在尝试从一个提供分页响应的REST端点获取数据。在flutter中单击一个按钮时,我希望获得响应中的下一个项目。我 * 认为 * 我希望使用一个流来抽象掉请求的分页特性,并自动轮询下一个结果。
就像这个伪代码:
Stream<String> nextUrl(int lastPage=0)
{
// Get paginated response
batch = server.getResponse(lastPage)
for (item in batch)
{
yield item;
}
// Recurse automatically
// Not a problem if the stream is suspended
// after every item request. A big problem
// if the stream never pauses.
await for (String item in nextUrl(lastPage++)
{
yield item;
}
}
// In flutter
class WidgetState extends state<MyPage> {
Stream<String> urlStream = new nextUrl(0);
String currentItem;
...
@override
Widget build(BuildContext context) {
return new InkWell(
onTap: () {
(() async {
// This is the call I haven't figured out.
await item = urlStream().getNext();
setState(() { currentItem = item; });
})();
}
);
}
}
我有一种感觉,也许像Stream.getNext()
这样的东西并不存在?我应该暂停/取消暂停这个流?但是我不确定为什么一次只返回一个项目。
1条答案
按热度按时间cetgtptt1#
async
包提供了StreamQueue,允许执行此操作