Reducer<State, Action, Environment>.combine constructor
Combines multiple reducers into one.
Each reducer runs in order on the same action, threading state through sequentially. Effects from all reducers are merged for concurrent execution.
final appReducer = Reducer.combine([
featureAReducer.pullback(...),
featureBReducer.pullback(...),
]);
Implementation
factory Reducer.combine(List<Reducer<State, Action, Environment>> reducers) => Reducer(
reduce: (state, action, environment) {
final List<Effect<Action>> effects = [];
var s = state;
for (final reducer in reducers) {
final (state: newState, effect: effect) = reducer.reduce(
s,
action,
environment,
);
effects.add(effect);
s = newState;
}
return (state: s, effect: Effect.merge(effects: effects));
},
);