为了使我的应用程序尽可能地保持高性能和代码可测试和可维护,我阅读了有关规范化 redux 状态的信息:https ://redux.js.org/recipes/structuringreducers/normalizingstateshape
我想知道在flutter中使用redux是否可以实现这样的事情。我有这个状态和视图模型:
class CompetitionState {
final LoadingStatus status;
final Competition competition;
}
class Competition {
final List<Competitor> competitors;
}
class CompetitionPageViewModel {
final LoadingStatus status;
final Competition competition;
}
竞争者中的单个竞争者List
可以根据用户输入或套接字事件动态变化。ListView
目前,当我像这样连接视图模型时,一个竞争对手内部的变化将导致我的完全重新渲染:
return StoreConnector<AppState, CompetitionPageViewModel>(
distinct: true,
converter: (store) => CompetitionPageViewModel.fromStore(store),
builder: (context, viewModel) => CompetitionPageContent(viewModel)
);
这个问题有解决方案吗?我的第一种方法是通过引入一个包含所有不同规范化实体的 EntityState 来规范化状态。类似于此处的显示方式: https ://medium.com/statuscode/dissecting-twitters-redux-store-d7280b62c6b1#.2e55tu6wb
但是有了这个,我不确定如何构造状态和减速器,以便能够在单个实体上工作而不会导致完整的列表重新渲染。以及如何将 Widget 连接到此状态内的单个实体。有没有人对此有任何经验并且可以指导我一个方向?