我正在尝试使用一个StreamProvider
(来自这个很棒的包),但我一直在努力让一个特定的流工作。
我创建了一个用于通过其向其StreamController
添加数据的. 所有这些似乎都运行良好。但是当它与 a 一起使用时,小部件树不会反映. 但是,使用. Stream
Sink
Stream
StreamProvider
Stream
StreamBuilder
使用的代码StreamProvider
:
class TestPage extends StatelessWidget {
final Mockup exchange = ExchangeApi.mockup;
@override
Widget build(BuildContext context) {
return StreamProvider<List<Data>>(
builder: (BuildContext context) => Wrapper.mockup.stream,
initialData: null,
catchError: (BuildContext context, e) {
print("Error: $e");
return null;
},
child: TestPageBody(),
);
}
}
class TestPageBody extends StatelessWidget {
@override
Widget build(BuildContext context) {
List<Data> dataList = Provider.of<List<Data>>(context);
return ListView.builder(
itemCount: dataList?.length ?? 0,
itemBuilder: (BuildContext context, int index) {
return Text(dataList[index].name);
},
);
}
}
我一直在寻找为什么这不起作用,但还没有找到答案。但这里有一些我确实发现的东西:
- 使用 Flutter Desktop Embedding,当窗口调整大小(从而强制重建)时,UI 确实反映了流中的变化。使用热刷新时可以看到相同的效果。
- 流不断添加新数据,我通过调试测试了这一点,并简单地打印出数据
任何帮助将不胜感激!