composeEnhancers

StoreEnhancer<S> composeEnhancers<S>(

  1. List<StoreEnhancer<S>> enhancers
)

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); }; }