0

I'm just playing a bit with flutter, and the generics in function call is confusing me. Consider the call below:

final signinReducer = combineReducers<SignInState>([
  TypedReducer<SignInState,ValidateEmailAction>(_validateEmail),
  TypedReducer<SignInState,ValidatePasswordAction>(_validatePassword),
  TypedReducer<SignInState,ValidateLoginFields>(_validateLoginFieldsAction),
  TypedReducer<SignInState,ChangeLoadingStatusAction>(_changeLoadingStatusAction),
  TypedReducer<SignInState,EmailErrorAction>(_emailErrorAction),
  TypedReducer<SignInState,PasswordErrorAction>(_passwordErrorAction),
  TypedReducer<SignInState,SaveTokenAction>(_saveToken),
  TypedReducer<SignInState,ConfirmForgotPasswordAction>(_confirmCodeAction),
  TypedReducer<SignInState,CheckTokenAction>(_checkTokenAction),
  TypedReducer<SignInState,ClearErrorsAction>(_clearErrorsAction),
  TypedReducer<SignInState,ChangeScreenStateAction>(_changeScreenStateAction),
]);

...

SignInState _validateEmail(SignInState state, ValidateEmailAction action){
  return state.copyWith(email: action.email);
}

SignInState _validatePassword(SignInState state, ValidatePasswordAction action) =>
    state.copyWith(password: action.password);
....

So what does the generic in combineReducers<SignInState> indicate?

Also most confusing is this syntax: TypedReducer<SignInState, ValidateEmailAction>(_validateEmail). What does the second type ValidateEmailAction do here?

rahulserver
  • 10,411
  • 24
  • 90
  • 164

1 Answers1

0

in Android Studio Hold the Ctrl and click on TypedReducer or any other types that you don't know, then you can read more info in the source file.

In this Case : TypedReducer

/// Creates a reducer that will only be executed if the dispatched action /// matches the [Action] type.

Ali Esfandiari
  • 316
  • 4
  • 13