Dart 每次从一个流请求一项数据?
我试图从为分页响应提供服务的REST端点获取数据。在颤振中单击按钮时,我希望得到响应中的下一项。我想我想使用一个流,它抽象出请求的分页性质,并自动轮询下一个结果 类似于这种飞镖伪代码:Dart 每次从一个流请求一项数据?,dart,flutter,Dart,Flutter,我试图从为分页响应提供服务的REST端点获取数据。在颤振中单击按钮时,我希望得到响应中的下一项。我想我想使用一个流,它抽象出请求的分页性质,并自动轮询下一个结果 类似于这种飞镖伪代码: Stream<String> nextUrl(int lastPage=0) { // Get paginated response batch = server.getResponse(lastPage) for (item in batch) { yield item;
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 nextUrl(int lastPage=0)
{
//获取分页响应
batch=server.getResponse(最后一页)
用于(批量项目)
{
收益项目;
}
//自动递归
//如果流被挂起,则不是问题
//在每一个项目请求之后。一个大问题
//如果流从不暂停。
等待(nextUrl(lastPage++)中的字符串项)
{
收益项目;
}
}
//飘飘然
类WidgetState扩展了状态{
Stream urlStream=new nextUrl(0);
字符串当前项;
...
@凌驾
小部件构建(构建上下文){
返回新墨水池(
onTap:(){
(()异步{
//这是我还没弄明白的电话。
等待项=urlStream().getNext();
setState((){currentItem=item;});
})();
}
);
}
}
我觉得可能不存在类似于
Stream.getNext()
的东西?我应该暂停/取消暂停此流?但我不确定如何一次只返回一个项目。允许这样做的异步
包提供
var events = new StreamQueue<String>(yourStream);
var first = await events.next;
while (...) {
...
first = await events.next;
}
var events=newstreamqueue(yourStream);
var first=等待事件。next;
而(…){
...
第一个=等待事件。下一个;
}
Ahh,太棒了!正是我想要找到的。谢谢!