繁体   English   中英

如何在Flutter中过滤一个stream?

[英]How can I filter a stream in Flutter?

我是 flutter/dart 的新手,在此页面中,我有一个“信息资源”列表,该列表使用我创建的名为 InformationResourceCard 的小部件填充屏幕。 我想使用一个下拉菜单,用户可以在其中 select 信息资源类型,然后根据他们的选择过滤 stream。

我似乎不知道该怎么做。 我目前的理解是页面必须是有状态的小部件,并且下拉菜单选择将调用 setState 以根据该选择重建列表。 但是,我不知道如何过滤 stream。下面是我用来构建列表的方法。

Widget _buildList(BuildContext context) {
    final database = Provider.of<Database>(context);
    return StreamBuilder<List<InformationResource>>(
      stream: database.informationResourceStream(widget.category.id),
      builder: (context, snapshot) {
        if (snapshot.hasData){
          final informationResources = snapshot.data;
          return ListView.builder(
            padding: const EdgeInsets.all(10.0),
            itemCount: informationResources.length,
            itemBuilder: (context, i) => InformationResourceCard(informationResource: informationResources[i])
          );
        }
        return //something else
      },
    );
  }

任何帮助将不胜感激。 谢谢!

过滤应该在将 Stream 传递给 StreamBuilder 之前完成。 在这种情况下,过滤器/查询应该在返回 Stream 的 Provider 上完成。您可以查看这篇文章,了解如何在 Provider 上实现过滤器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM