Created
June 27, 2019 18:15
-
-
Save VB10/1b1c159d3ef151407254e7499e4a4039 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class LoginModel extends BaseModel { | |
Api _api = locator<Api>(); | |
TextEditingController userEmail; | |
TextEditingController userPassword; | |
BuildContext _context; | |
LoginModel() { | |
userEmail = new TextEditingController(); | |
userPassword = new TextEditingController(); | |
} | |
final formKey = GlobalKey<FormState>(); | |
void login() { | |
if (formKey.currentState.validate()) { | |
setState(ViewState.Busy); | |
var _user = LoginRequest( | |
email: userEmail.text.trim(), | |
password: userPassword.text.trim(), | |
returnSecureToken: true.toString()); | |
_api.signin_user(_user).then(onSuccess).catchError(onError); | |
} else | |
return; | |
} | |
Future onSuccess(dynamic response) async { | |
var model = response as LoginResponse; | |
Scaffold.of(_context) | |
.showSnackBar(SnackBar(content: Text("Welcome ${model.email}"))); | |
saveUserState(model); | |
Navigator.of(_context) | |
.pushNamed(EnumConverter.stringFromEnum(RouteState.HOME)); | |
print(model); | |
setState(ViewState.Idle); | |
} | |
void onError(dynamic response) { | |
var model = response as LoginResponse; | |
Navigator.of(_context) | |
.pushNamed(EnumConverter.stringFromEnum(RouteState.REGISTER)); | |
setState(ViewState.Idle); | |
} | |
@override | |
void dispose() { | |
this.removeListener(() => this); | |
} | |
saveUserState(LoginResponse model) async { | |
SharedPreferences prefs = await SharedPreferences.getInstance(); | |
await prefs.reload(); | |
prefs.setString(UserLocalState.TOKEN_ID.toString(), model.id_token); | |
prefs.setString( | |
UserLocalState.TOKEN_REFRESH.toString(), model.refreshToken); | |
} | |
@override | |
void setContext(BuildContext context) { | |
// TODO: implement setContext | |
_context = context; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment