我使用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);
});
}你能指点我一下吗?
发布于 2022-01-25 20:17:49
尝试在您的Key构建的每个小部件中添加一个唯一的StreamBuilder。
完全重置流也不常见,而不是通过已经使用的流推送新数据。
https://stackoverflow.com/questions/70854631
复制相似问题