Flutter 从服务类刷新多个视图模型 上下文

Flutter 从服务类刷新多个视图模型 上下文,flutter,flutter-provider,Flutter,Flutter Provider,我的项目如下所示: +-- screens | +-- main_screen.dart | +-- details_screen.dart | +-- summary_screen.dart +-- viewmodels | +-- main_screen_viewmodel.dart | +-- details_screen_viewmodel.dart | +-- summary_screen_viewmodel.dart +-- services | +--

我的项目如下所示:

+-- screens
|   +-- main_screen.dart
|   +-- details_screen.dart
|   +-- summary_screen.dart
+-- viewmodels
|   +-- main_screen_viewmodel.dart
|   +-- details_screen_viewmodel.dart
|   +-- summary_screen_viewmodel.dart
+-- services
|   +-- caching.dart
|   +-- api.dart
+-- lib.dart
屏幕使用包含所需所有数据的ViewModel;对模型的任何更改都会导致重建视图:

//main\u screen.dart
类_MainScreenState扩展状态{
最终模型=主屏幕视图模型();
小部件构建(构建上下文){
返回ChangeNotifierProvider(
创建:(BuildContext context)=>widget.model,
儿童:消费者(
生成器:(上下文、模型、子项)=>文本(model.welcomeMessage)
)
);
}
}
这一切看起来都像是一个相当标准的提供者实现;是时候描述我的问题了

问题 我有一个名为
Caching
的类,它处理API请求的缓存。当对资源(例如事务)进行更改时,我希望触发所有viewmodels的刷新,以便UI显示更新的数据


如何从缓存类中访问ViewModels以触发更新?

我使用
StreamController
处理此问题,例如:
在视图模型中,我有这部分代码,这一行用于为流
\u basketService.historiesStreamNotifier.listen((value)async{await fetchData();})创建侦听器

在服务内部声明my
StreamController

StreamController<int> _historiesStreamControllerNotifier =
      StreamController<int>.broadcast();

Stream<int> get historiesStreamNotifier =>
      _historiesStreamControllerNotifier.stream;
StreamController\u历史流控制器通知程序=
StreamController.broadcast();
Stream get HistoriessStreamNotifier=>
_HistoriessTreamController通知程序.stream;
因此,每当我需要从服务中刷新视图模型时,我只需调用
\u historiesStreamControllerNotifier.sink.add(0)

这将触发用
定义的回调。请听(…)

非常欢迎您,谢谢您纠正我的代码输入错误。