我的应用程序设置方式是让SessionRepository
提供程序包装MaterialApp。该存储库使我可以跟踪整个应用程序中有关会话的数据。
@override
Widget build(BuildContext context) {
return Provider<SessionRepository>(
create: (_) => SessionRepository()),
child: MaterialApp(
...
),
);
}
在我的一个屏幕中,我按照MVVM体系结构创建视图模型,并使用SessionRepository
初始化一些视图模型变量。
Widget build(BuildContext context) {
final session = Provider.of<SessionRepository>(context, listen: false);
return Provider<TestViewModel>(
create: (context) => TestViewModel(session),
child: ...
);
}
在我的视图模型中,这正在发生:
class TestViewModel{
final SessionRepository session;
final var foo;
final var bar;
TestViewModel(this.session) : foo = session.foo, bar = session.bar;
}
我的问题是,每当更新会话变量时,我也希望视图模型存储更新后的变量。我想不出有什么办法可以在更新会话,输入任何内容时自动完成?
答案 0 :(得分:0)
如果要通知视图,则SessionRepository属性更改时,并使用新值重新创建视图模型,SessionRepository必须实现ChangeNotifier。查看ChangeNotifierProvider个示例。