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 个示例。