Flutter 颤振中ViewModel之间如何共享全局状态

Flutter 颤振中ViewModel之间如何共享全局状态,flutter,dart,dependency-injection,solid-principles,Flutter,Dart,Dependency Injection,Solid Principles,我的应用程序设置如下: GetIt for DI of services 视图模型(扩展ChangeNotifier) 带有ChangeNotifierProvider的无状态页面,每页侦听ViewModel 在要跨页面使用的视图模型之间共享状态的最佳方法是什么?现在我有一个中央服务,它被注入到每个视图模型中,每个视图模型都有一些全局状态——我的直觉是让中央服务公开一个流,并让每个视图模型在初始化时订阅该流,但不确定这是否是最好的方法?我也会说使用提供者包。在小部件树的根(即Material

我的应用程序设置如下:

  • GetIt for DI of services
  • 视图模型(扩展ChangeNotifier)
  • 带有ChangeNotifierProvider的无状态页面,每页侦听ViewModel

在要跨页面使用的视图模型之间共享状态的最佳方法是什么?现在我有一个中央服务,它被注入到每个视图模型中,每个视图模型都有一些全局状态——我的直觉是让中央服务公开一个流,并让每个视图模型在初始化时订阅该流,但不确定这是否是最好的方法?

我也会说使用提供者包。在小部件树的根(即
MaterialApp
上方)声明全局状态的提供程序。这样,整个应用程序中的每个小部件都可以访问它。你也可以使用GetIt来实现这个目的,或者BLoC,或者Singleton,或者GetX,或者……谢谢——也许我在这里是一个纯粹主义者,但是通过小部件树传递状态感觉不太对劲——这只是依赖注入的另一种形式。许多其他框架都有一个通过小部件树的DI解决方案。您还说您当前已经在使用
ChangeNotifierProvider
,因此您已经在小部件树中传递状态,只是传递的程度要小得多。这很公平,谢谢!