Michael
Michael

Reputation: 3228

What does void Function() do in Dart?

I´m quite new to dart and wondering what this "wrapped" function exactly does? It´s called like a normal function with "connectUnits(userRepo)":

void Function(
    Store<AppState> store,
    dynamic action,
    NextDispatcher next,
  ) connectUnits(
    UnitsRepository unitsRepository,
  ) {
    return (store, action, next) {
      unitsRepository.units().listen((units) {
        store.dispatch(LoadUnitsAction(units));
        next(action);
      });
    };
  }

Thanks & best, Michael

Upvotes: 4

Views: 9717

Answers (1)

Alexandre Ardhuin
Alexandre Ardhuin

Reputation: 76193

Functions are first class citizens in Dart. Your example defines a function named connectUnits that returns a function with a signature void Function(Store<AppState> store, dynamic action, NextDispatcher next).

To better understand, your code is the same as:

// define a kind of function
typedef MyFunction = void Function(Store<AppState> store, dynamic action, NextDispatcher next);

MyFunction connectUnits(UnitsRepository unitsRepository) {
  return (store, action, next) {
    unitsRepository.units().listen((units) {
      store.dispatch(LoadUnitsAction(units));
      next(action);
    });
  };
}

Upvotes: 6

Related Questions