Created
February 23, 2018 16:12
-
-
Save JulianBissekkou/151e5f8ee2bd011296fe3adc886115c4 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
import 'package:flutter/material.dart'; | |
import 'package:flutter/widgets.dart'; | |
import 'package:timecoder/data/data_access/services/Values.dart'; | |
import 'package:timecoder/i18n/I18n.dart'; | |
import 'package:timecoder/ui/general/TCButton.dart'; | |
import 'package:timecoder/ui/general/TCErrorDialog.dart'; | |
import 'package:timecoder/ui/general/TCProgressIndicator.dart'; | |
import 'package:timecoder/ui/page/login_register/login/LoginPagePresenter.dart'; | |
import 'package:timecoder/ui/page/login_register/login/text_field/LoginTextField.dart'; | |
class LoginPageView extends StatefulWidget { | |
@override | |
State<StatefulWidget> createState() => new _LoginPageState(); | |
} | |
class _LoginPageState extends State<LoginPageView> | |
implements LoginPageContract { | |
LoginPagePresenter _presenter; | |
TextEditingController _emailController; | |
TextEditingController _passwordController; | |
bool _buttonEnabled = false; | |
_LoginPageState() { | |
_presenter = new LoginPagePresenter(this); | |
} | |
@override | |
void initState() { | |
super.initState(); | |
//Create a change Event for the TextFields | |
_emailController = new TextEditingController(); | |
_emailController.addListener(_onTextChanged); | |
_passwordController = new TextEditingController(); | |
_passwordController.addListener(_onTextChanged); | |
} | |
@override | |
Widget build(BuildContext context) { | |
return new ListView( | |
children: <Widget>[ | |
new Padding(padding: const EdgeInsets.all(16.0)), | |
new LoginTextField( | |
controller: _emailController, | |
fieldType: LoginTextFieldType.EMAIL, | |
hintText: I18n | |
.of(context) | |
.email, | |
), | |
new LoginTextField( | |
controller: _passwordController, | |
fieldType: LoginTextFieldType.PASSWORD, | |
hintText: I18n | |
.of(context) | |
.password, | |
), | |
new Container( | |
padding: const EdgeInsets.all(16.0), | |
child: new Center( | |
child: new TCButton( | |
text: I18n | |
.of(context) | |
.login, | |
onTab: () => | |
_presenter.login( | |
_emailController.text.trim(), _passwordController.text), | |
enabled: _buttonEnabled), | |
), | |
) | |
]); | |
} | |
_onTextChanged() { | |
_presenter.updateValidation( | |
_emailController.text.trim(), _passwordController.text); | |
} | |
@override | |
void dispose() { | |
super.dispose(); | |
_emailController.dispose(); | |
_passwordController.dispose(); | |
} | |
@override | |
void onLoginFailure(errorCode) { | |
showDialog( | |
context: context, | |
child: new ErrorDialog(message: _generateErrorMessage(errorCode))); | |
} | |
@override | |
void onLoginSuccess() { | |
Navigator.pushReplacementNamed(context, '/somePage'); | |
} | |
@override | |
void onValidationChanged(bool isValid) { | |
setState(() { | |
_buttonEnabled = isValid; | |
}); | |
} | |
@override | |
void onStopRequestLoading() { | |
Navigator.pop(context); | |
} | |
@override | |
void onStartRequestLoading() { | |
showDialog( | |
context: context, | |
child: new ProgressIndicator()); | |
} | |
String _generateErrorMessage(errorCode) { | |
return "shit.."; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment