pullback<PS, PE, PA extends ReducerAction> method
Reducer<PS, PE, PA>
pullback<PS, PE, PA extends ReducerAction>({
- required S toChildState(
- PS
- required PS fromChildState(
- S
- required A? toChildAction(
- PA
- required PA fromChildAction(
- A
- required E toChildEnvironment(
- PE
Implementation
Reducer<PS, PE, PA> pullback<PS, PE, PA extends ReducerAction>(
{required S Function(PS) toChildState,
required PS Function(S) fromChildState,
required A? Function(PA) toChildAction,
required PA Function(A) fromChildAction,
required E Function(PE) toChildEnvironment}) {
return Reducer<PS, PE, PA>((PS state, PA action) {
final childState = toChildState(state);
final optionalChildAction = toChildAction(action);
if (optionalChildAction == null) {
return ReducerTuple(state, []);
} else {
final childReducerTuple = run(childState, optionalChildAction);
final newState = fromChildState(childReducerTuple.state);
final effectTasks = childReducerTuple.effectTasks.map((effectTask) =>
effectTask.pullback(
toChildState: toChildState,
toChildEnvironment: toChildEnvironment,
fromChildAction: fromChildAction,
toChildContext: (cx) => cx));
return ReducerTuple(newState, effectTasks);
}
});
}