我有一个 StreamController 应该更新 aList
但它没有发生:
class LocationService {
StreamController<List<bg.Geofence>> geofencesController = StreamController<List<bg.Geofence>>();
updateGeofences(geofences) {
logger.i('listing geofences $geofences');
geofencesController.add(List.from(list));
}
}
当我打电话时,updateGeofences
我在日志中有很多地理围栏。但是小部件没有重建!
这是我的提供商设置:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
StreamProvider<List<bg.Geofence>>.value(
updateShouldNotify: (_, __) {
logger.i('updateShouldNotify, $_, $__');
return true;
},
initialData: List<bg.Geofence>(),
stream: LocationService().geofencesController.stream)
],
child: MaterialApp()
);
}
}
当我直接从我的服务中收听时
geofencesController.stream.listen((onData) {
logger.i('Got eem! $onData');
});
流发出新数据......但不是在 StreamProvider:updateShouldNotify
中:从未被调用(我没有运气尝试过这个答案的解决方案)
以下是我查看数据的方式:
class GPSView extends StatelessWidget {
@override
Widget build(BuildContext context) {
List<bg.Geofence> geofences = Provider.of<List<bg.Geofence>>(context);
但是这个列表仍然是空的。
我有另一个带有简单 Map 的 StreamController 可以完美运行。怎么了?