Skip to content

Instantly share code, notes, and snippets.

@JulianBissekkou
Created February 23, 2018 16:12
Show Gist options
  • Save JulianBissekkou/151e5f8ee2bd011296fe3adc886115c4 to your computer and use it in GitHub Desktop.
Save JulianBissekkou/151e5f8ee2bd011296fe3adc886115c4 to your computer and use it in GitHub Desktop.
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