我有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”页面上查看更多高级统计信息。
如果我在playModel..update(user)中运行notifyListeners(), 每次更新RawStats时,播放页面都会更新。
这是正确的方法还是我的设计有缺陷? 我应该将userId和rawStats分开吗?