@@ -12,21 +12,25 @@ class LoginForm extends ConsumerStatefulWidget {
1212 const LoginForm ({Key ? key}) : super (key: key);
1313
1414 @override
15- ConsumerState <ConsumerStatefulWidget > createState () => _LoginFormState ();
15+ ConsumerState <LoginForm > createState () => _LoginFormState ();
1616}
1717
1818class _LoginFormState extends ConsumerState <LoginForm > {
1919 final _formKey = GlobalKey <FormState >();
20+ final _emailController = TextEditingController ();
21+ final _passwordController = TextEditingController ();
22+
2023 bool _isFormSubmitted = false ;
2124
2225 TextFormField get _emailTextField => TextFormField (
2326 keyboardType: TextInputType .emailAddress,
2427 autocorrect: false ,
2528 decoration: PrimaryTextFieldDecoration (
26- hintText: context.localizations? .emailInputHint,
29+ hintText: context.localizations.emailInputHint,
2730 hintTextStyle: context.textTheme.bodyMedium,
2831 ),
2932 style: context.textTheme.bodyMedium,
33+ controller: _emailController,
3034 validator: _validateEmail,
3135 autovalidateMode: _isFormSubmitted
3236 ? AutovalidateMode .onUserInteraction
@@ -37,10 +41,11 @@ class _LoginFormState extends ConsumerState<LoginForm> {
3741 autocorrect: false ,
3842 obscureText: true ,
3943 decoration: PrimaryTextFieldDecoration (
40- hintText: context.localizations? .passwordInputHint,
44+ hintText: context.localizations.passwordInputHint,
4145 hintTextStyle: context.textTheme.bodyMedium,
4246 ),
4347 style: context.textTheme.bodyMedium,
48+ controller: _passwordController,
4449 validator: _validatePassword,
4550 autovalidateMode: _isFormSubmitted
4651 ? AutovalidateMode .onUserInteraction
@@ -50,29 +55,36 @@ class _LoginFormState extends ConsumerState<LoginForm> {
5055 ElevatedButton get _loginButton => ElevatedButton (
5156 style: PrimaryButtonStyle (hintTextStyle: context.textTheme.labelMedium),
5257 onPressed: _submit,
53- child: Text (context.localizations? .loginButton ?? '' ),
58+ child: Text (context.localizations.loginButton),
5459 );
5560
5661 String ? _validateEmail (String ? email) {
5762 if (! ref.read (loginViewModelProvider.notifier).isValidEmail (email)) {
58- return context.localizations? .invalidEmailError;
63+ return context.localizations.invalidEmailError;
5964 }
6065 return null ;
6166 }
6267
6368 String ? _validatePassword (String ? password) {
6469 if (! ref.read (loginViewModelProvider.notifier).isValidPassword (password)) {
65- return context.localizations? .invalidPasswordError;
70+ return context.localizations.invalidPasswordError;
6671 }
6772 return null ;
6873 }
6974
7075 void _submit () {
7176 setState (() => _isFormSubmitted = true );
72- if (_formKey.currentState? .validate () == true ) {
73- context.dismissKeyboard ();
74- // TODO: Integrate with API
77+ final isFormValidated = _formKey.currentState? .validate () ?? false ;
78+
79+ if (! isFormValidated) {
80+ return ;
7581 }
82+
83+ context.dismissKeyboard ();
84+ ref.read (loginViewModelProvider.notifier).login (
85+ email: _emailController.text,
86+ password: _passwordController.text,
87+ );
7688 }
7789
7890 @override
0 commit comments