【发布时间】:2022-11-28 18:58:14
【问题描述】:
我有一个 Flutter 应用程序,它在页面显示中包含 PlutoGrid 组件。网格旨在显示从 RiverPod StreamProvider 检索到的对象列表,其中该提供程序正在从 FireStore 集合中提取数据。
在应用程序中,当我添加一个新条目时,我希望网格在“构建”过程中重新绘制自身 - 但事实并非如此!
@override
Widget build(BuildContext context) {
final aGoalStream = ref.watch(goalsListStreamProvider);
print('rebuild');
return aGoalStream.when(
error: (error, stack) => Center(
child: Text('Error [${error.toString()}]'),
),
loading: () => Center(
child: CircularProgressIndicator(),
),
data: (data) {
return Container(
child: PlutoGrid(
columns: _columns,
rows: data.map((e) {
print('cell');
return PlutoRow(cells: _toCells(e));
}).toList(),
));
},
);
}
通过记录“打印”调用,我可以看到在发布新记录后,正在调用“aGoalStream =”代码行,并且正在刷新单元格,但网格不会刷新以显示预期的新行。
有什么建议么?
【问题讨论】:
-
我记得,PlutoGrid 在第一次构建时复制了它的数据。有具体的方法更新数据,因此它可能正确地重建了小部件,但使用的是旧数据。
标签: flutter