Dart 每次从一个流请求一项数据?

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;

我试图从为分页响应提供服务的REST端点获取数据。在颤振中单击按钮时,我希望得到响应中的下一项。我想我想使用一个流,它抽象出请求的分页性质,并自动轮询下一个结果

类似于这种飞镖伪代码:

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,太棒了!正是我想要找到的。谢谢!