Я пытаюсь написать систему для входа пользователя в систему с использованием избыточности для управления состоянием, я сделал то же, что и ниже, но не знаю, что делать дальше
возможно, я что-то делаю неправильно, может кто-то посмотрите и направьте меня по правильному пути?
вот мой код:
user_action.dart
const USER_LOGIN_REQUEST = 'USER_LOGIN_REQUEST';
const USER_LOGIN_SUCCESS = 'USER_LOGIN_SUCCESS';
const USER_LOGIN_FAILURE = 'USER_LOGIN_FAILURE';
RSAA getLoginRequest(String email, String password) {
return
RSAA(
method: 'POST',
endpoint: 'http://10.0.2.2:80/user/login',
types: [
USER_LOGIN_REQUEST,
USER_LOGIN_SUCCESS,
USER_LOGIN_FAILURE,
],
headers: {
'Content-Type': 'application/json',
},
body: {"email":email, "password":password}
);
}
ThunkAction<AppState> getLogin(String email, String password) => (Store<AppState> store) => store.dispatch(getLoginRequest(email, password));
user_reducer.dart
UserState userReducer(UserState state, FSA action) {
UserState newState = state;
switch (action.type) {
case USER_LOGIN_REQUEST:
newState.login.error = null;
newState.login.loading = true;
newState.login.data = null;
return newState;
case USER_LOGIN_SUCCESS:
newState.login.error = null;
newState.login.loading = false;
newState.login.data = userFromJSON(action.payload);
return newState;
case USER_LOGIN_FAILURE:
newState.login.error = action.payload;
newState.login.loading = false;
newState.login.data = null;
return newState;
default:
return newState;
}
}
User userFromJSON(dynamic payload){
return User.fromJSON(json.decode(payload));
}
user_state.dart
class UserState {
UserLogin login;
UserState({
this.login
});
factory UserState.initial() => UserState(
login: UserLogin.initial()
);
}
class UserLogin {
dynamic error;
bool loading;
User data;
UserLogin({
this.error,
this.data,
this.loading
});
factory UserLogin.initial() => UserLogin(
error: null,
loading: false,
data: null
);
}
и мой user_login_screen:
class LoginUserScreen extends StatelessWidget{
void handleInitialBuild(UserLoginScreenProps props){
props.getUser();
}
@override
Widget build(BuildContext context){
return StoreConnector<AppState, UserLoginScreenProps>(
converter: (store) => mapStateToProps(store),
onInitialBuild: (props) => this.handleInitialBuild(props),
builder: (context, props){
//
},
);
}
}
class UserLoginScreenProps{
final Function getUser;
UserLoginScreenProps({
this.getUser
});
}
UserLoginScreenProps mapStateToProps(Store<AppState> store){
return UserLoginScreenProps(
getUser: (String email, String password) => store.dispatch(getLoginRequest(email, password))
);
}
Я застрял на этом этапе и не знаю, что делать дальше, кто-нибудь может помочь?
спасибо за любую помощь заранее, действительно, любая помощь будет полезна