Flutter:当全局变量随 MVVM 变化时更新 class 变量
Flutter: Update class variable when global variable changes with MVVM
我以 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;
}
我的问题是,每当我更新会话变量时,我还希望视图模型存储更新后的变量。我想不出有什么方法可以在更新会话时自动完成,有任何输入吗?
如果您想在 SessionRepository 属性 更改时通知您的视图,并使用新值重新创建您的视图模型,SessionRepository 必须实现 ChangeNotifier. Check out the ChangeNotifierProvider 个示例。
我以 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;
}
我的问题是,每当我更新会话变量时,我还希望视图模型存储更新后的变量。我想不出有什么方法可以在更新会话时自动完成,有任何输入吗?
如果您想在 SessionRepository 属性 更改时通知您的视图,并使用新值重新创建您的视图模型,SessionRepository 必须实现 ChangeNotifier. Check out the ChangeNotifierProvider 个示例。