Flutter 什么';使用提供者进行依赖注入的正确方法是什么?

Flutter 什么';使用提供者进行依赖注入的正确方法是什么?,flutter,flutter-provider,Flutter,Flutter Provider,我正在构建一个应用程序,希望使用提供商作为我的to go DI工具 我想构建一个具有以下体系结构的应用程序: 观点 视图模型 服务 视图是简单的UI,几乎每个视图都有viewmodels支持。这些视图模型依赖于服务所持有的值 Viewmodels通过ChangeNotifierProvider进行扩展,以反映UI中的更改,这可以正常工作。但我应该用什么来应对服务的变化呢。单个服务可以在多个ViewModel中使用,当然,我需要使所有这些都保持最新 我已经查阅了一些教程,但它并没有向我解释这种

我正在构建一个应用程序,希望使用提供商作为我的to go DI工具

我想构建一个具有以下体系结构的应用程序:

  • 观点
  • 视图模型
  • 服务
视图是简单的UI,几乎每个视图都有viewmodels支持。这些视图模型依赖于服务所持有的值

Viewmodels通过
ChangeNotifierProvider
进行扩展,以反映UI中的更改,这可以正常工作。但我应该用什么来应对服务的变化呢。单个服务可以在多个ViewModel中使用,当然,我需要使所有这些都保持最新

我已经查阅了一些教程,但它并没有向我解释这种情况,或者我不明白

ProxyProvider
用于其他情况。Viewmodel向服务发出请求,但其值直接在UI中使用


怎样才能使这种连接正常工作?对于这种情况,我是否应该使用
ChangeNotifierProxyProvider
?我应该使用流吗

使用di,正如您所说的ProxyProvider;ProxyProvider可以作为应用程序范围(在应用程序小部件顶部声明,以便可以在应用程序中的任何位置访问,例如AuthService)或小部件(屏幕)范围(例如ViewModel)

在本例中,A是MyWidget的ViewModel,B是Service 另外,您应该在这个层次结构的顶部提供另一个具有B类的提供程序,以便ProxyProvider可以访问它来“提供”给一个类

ProxyProvider<B, A>(
        create: (_) => A(),
        update: (_, b, a) => a..bClassVariable = b,
        dispose: (_, a) => a.dispose(), //if you use streams
        child: MyWidget(

        ),
      )
ProxyProvider(
创建:()=>A(),
更新:(u,b,a)=>a..bClassVariable=b,
dispose:(\uz,a)=>a.dispose(),//如果使用流
孩子:MyWidget(
),
)
关于您的最后一个答案,没有答案)只有您应该决定哪种方法更适合您的需要,如果您熟悉ViewVievModel,您可以继续使用它,或者学习一些新的东西,如BloC

注:如果您使用ViewModel ChangeProvider,则可以正常工作 如果使用bloc,则应使用流