Flutter 如何为小部件(视图)启动ViewModel
因此,我正在编写一个利用MVVM体系结构的颤振应用程序。对于每个屏幕(小部件),我都有一个带有ValueNotifiers的viewModel,我想为该视图启动viewModel。 现在,大多数指南都建议使用提供者方法,但为什么要在我可以正常启动时提供它呢 代码:Flutter 如何为小部件(视图)启动ViewModel,flutter,Flutter,因此,我正在编写一个利用MVVM体系结构的颤振应用程序。对于每个屏幕(小部件),我都有一个带有ValueNotifiers的viewModel,我想为该视图启动viewModel。 现在,大多数指南都建议使用提供者方法,但为什么要在我可以正常启动时提供它呢 代码: 类模型{ 最终估价通知程序_active=估价通知程序(false); ValueNotifier get active=>\u active; FooModel(){u active=false;} doSomething(){u
类模型{
最终估价通知程序_active=估价通知程序(false);
ValueNotifier get active=>\u active;
FooModel(){u active=false;}
doSomething(){u active=!\u active}
}
我想做的是:
@override
Widget build(BuildContext context) {
_viewModel = FooModel();
return Scaffold(
body:ValueListenableBuilder<bool>(
valueListenable: _viewModel.active,
builder : (context,value,_){
if(value)return(Text("active");
return Text("unactive");
}
)
}
@覆盖
小部件构建(构建上下文){
_viewModel=FooModel();
返回脚手架(
正文:ValueListenableBuilder(
valueListenable:_viewModel.active,
构建器:(上下文,值,u){
如果(值)返回(文本(“活动”);
返回文本(“非活动”);
}
)
}
建议:
Widget build(BuildContext context) {
return Provider<FooModel>(
create: (_) => FooModel(),
builder: (context, child) {
final vm = Provider.of<FooModel>(context);
return ValueListenableBuilder<bool>(
valueListenable: vm.active,
builder: (context, value) {
if (value) return Text("active");
return Text("unactive");
});
},
);
}
小部件构建(构建上下文){
返回提供者(
创建:()=>FooModel(),
生成器:(上下文,子对象){
final vm=Provider.of(上下文);
返回值ListenableBuilder(
valueListenable:vm.active,
生成器:(上下文、值){
如果(值)返回文本(“活动”);
返回文本(“非活动”);
});
},
);
}
现在我明白了,我所建议的在每次构建时都会创建viewModel,但这应该只在ValueNotifier加载屏幕时才会发生,所以这很好。
我想我只是不理解提供viewModel的价值。颤振有不同的思想。 是的,您可以创建价值通知,这样做很好,但只需考虑更大的前景。 选中此流您要调用API,然后对其执行解析和过滤,屏幕上有两个视图显示相同的数据一个是显示数据,另一个是与数据交互,此更新需要反映在显示的数据上 要做到这一点,我们需要做什么
for(int i=0;i<length;i++)
while(i++<length)
for(i in 0...length)
for(int i=0;我为什么反对投票?我的问题是提供代码和所有东西。这可能不符合主题,但如果您希望使用mvvm arch实现应用程序。有一个软件包堆叠()。它遵循mvvm arch,并附带一些非常有用的功能。看看它是否符合您的要求。
for(int i=0;i<length;i++)
while(i++<length)
for(i in 0...length)