颤抖的ChangeNotifierProxyProvider-状态之间的依赖关系和通知小部件

时间:2020-07-02 23:19:37

标签: flutter provider state-management

我有User模型,其他一些模型(PlayModel,Stats)则取决于User。 例如,

// User data will be stored in cloud.
User {
  String userId;
  RawStats rawStats;
}
// Model for Play page. When User plays, update raw stats.
PlayModel {
  void updateRawStats();
}
// Model for Stats page. Advanced stats.
Stats {
  Stats stats;
  void computeMoreStats(rawStats);
}

providers: [
        ChangeNotifierProvider<User>(          
            builder: (context) => User()),
        ChangeNotifierProxyProvider<User, PlayModel>(
          initialBuilder: (_) => PlayModel(),
          builder: (_, user, playModel) => playModel..update(user),
        ),
        ChangeNotifierProxyProvider<User, Stats>(
          initialBuilder: (_) => Stats(),
          builder: (_, user, stats) => stats..update(user),
        ),
    ],

(这是简化版本,但实际示例会更复杂)

RawStats会根据用户的玩法进行更新,并且用户可以在“ Stats”页面上查看更多高级统计信息。

  1. 如果userId已更新,则“播放”页面和“统计”页面均应更新。
  2. “播放”页面可以更新用户的RawStats,而“ Stats”页面也应该更新。

如果我在playModel..update(user)中运行notifyListeners(), 每次更新RawStats时,播放页面都会更新。

这是正确的方法还是我的设计有缺陷? 我应该将userId和rawStats分开吗?

0 个答案:

没有答案