【问题标题】:streamBuilder not updating itsself after sorting or filtering - FlutterstreamBuilder 在排序或过滤后不更新自身 - Flutter
【发布时间】:2022-01-25 19:33:43
【问题描述】:

我正在使用 StreamBuilder 和 ListView 在 UI 中显示来自 FireStoreDatabase 的数据。通常,当我对数据库进行任何更改(不刷新)时,它会自行更新。但是当我对流中的数据进行排序时,它不再更新。这是用于 StreamBuilder 的代码。

Stream<List<Attraction>> attractionsStream = Stream.value([]);

void initState() {
    final database = Provider.of<Database>(context, listen: false);
     setState(() {
          //this.attractions = attractions.toList();
          attractionsStream = database.attractionStream();
        });
}

@override
  Widget build(BuildContext context) {
    return Scaffold(
      body: StreamBuilder<List<Attraction>>(
      stream: attractionsStream,
      builder: (context, snapshot) {...}
    );
  }

_sortData() async {
    final db = Provider.of<Database>(context, listen: false);
    var attractions = await db.attractionStream().first;
    attractions.sort((a, b) {...}
    setState(() {
      attractionsStream = Stream.value(attractions);
    });
    }

你能指导我吗?

【问题讨论】:

    标签: flutter dart stream provider


    【解决方案1】:

    尝试为您的 StreamBuilder 构建的每个小部件添加一个唯一的 Key。

    完全重置流也不常见,而不是通过已使用的流推送新数据。

    【讨论】:

    • 我尝试使用key,但没有成功。您能推荐一些其他更改数据的方法吗?
    • 您对流的使用看起来不对劲。您不想重新分配流,而是希望通过现有流推送新数据。尝试myStreamController.sink.add(data) 而不是创建新流。
    • 我也尝试使用它,但添加后它不会自行更新
    • 我们需要查看您的更新代码 :)
    猜你喜欢
    • 2021-12-14
    • 2020-10-15
    • 2019-08-19
    • 2023-02-11
    • 1970-01-01
    • 2021-09-27
    • 2022-11-17
    • 1970-01-01
    • 2019-06-04
    相关资源
    最近更新 更多