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?