createSelector5
Selector<
- T1,
- T2,
- T3,
- T4,
- T5,
Creates a memoized selector with five input selectors.
Implementation
Selector<S, R> createSelector5<S, T1, T2, T3, T4, T5, R>(
Selector<S, T1> selector1,
Selector<S, T2> selector2,
Selector<S, T3> selector3,
Selector<S, T4> selector4,
Selector<S, T5> selector5,
R Function(T1, T2, T3, T4, T5) combiner,
) {
T1? lastInput1;
T2? lastInput2;
T3? lastInput3;
T4? lastInput4;
T5? lastInput5;
R? lastResult;
var hasCache = false;
return (S state) {
final input1 = selector1(state);
final input2 = selector2(state);
final input3 = selector3(state);
final input4 = selector4(state);
final input5 = selector5(state);
if (hasCache &&
identical(input1, lastInput1) &&
identical(input2, lastInput2) &&
identical(input3, lastInput3) &&
identical(input4, lastInput4) &&
identical(input5, lastInput5)) {
return lastResult as R;
}
lastInput1 = input1;
lastInput2 = input2;
lastInput3 = input3;
lastInput4 = input4;
lastInput5 = input5;
lastResult = combiner(input1, input2, input3, input4, input5);
hasCache = true;
return lastResult as R;
};
}