composeEnhancers
StoreEnhancer<
Composes multiple store enhancers into a single enhancer.
This is useful when you want to apply multiple enhancers to the store. The enhancers are applied from right to left (last to first).
Example:
final store = createStore(
reducer,
initialState,
enhancer: composeEnhancers([
applyMiddleware([loggerMiddleware]),
devToolsEnhancer,
]),
);
Implementation
StoreEnhancer<S> composeEnhancers<S>(List<StoreEnhancer<S>> enhancers) {
if (enhancers.isEmpty) {
return (createStore, reducer, preloadedState) =>
createStore(reducer, preloadedState);
}
if (enhancers.length == 1) return enhancers.first;
// Apply enhancers from right to left
return (createStore, reducer, preloadedState) {
var currentCreateStore = createStore;
for (var i = enhancers.length - 1; i >= 0; i--) {
final enhancer = enhancers[i];
final prevCreateStore = currentCreateStore;
currentCreateStore = (r, s) => enhancer(prevCreateStore, r, s);
}
return currentCreateStore(reducer, preloadedState);
};
}