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