1
1
import 'package:auto_route/auto_route.dart' ;
2
2
import 'package:flutter/material.dart' ;
3
+ import 'package:get_it/get_it.dart' ;
4
+ import 'package:pdg_app/provider/auth_provider.dart' ;
3
5
import 'package:pdg_app/widgets/forms/main_text_field.dart' ;
4
6
import 'package:pdg_app/widgets/right_arrow_button.dart' ;
5
7
6
8
import '../router/router.gr.dart' ;
7
9
import '../widgets/login/bottom_shape.dart' ;
8
10
import '../widgets/login/top_shape.dart' ;
9
11
10
- class LoginScreen extends StatelessWidget {
12
+ class LoginScreen extends StatefulWidget {
11
13
const LoginScreen ({Key ? key}) : super (key: key);
12
14
15
+ @override
16
+ State <LoginScreen > createState () => _LoginScreenState ();
17
+ }
18
+
19
+ class _LoginScreenState extends State <LoginScreen > {
20
+ final TextEditingController _emailController = TextEditingController ();
21
+ final TextEditingController _passwordController = TextEditingController ();
22
+
13
23
@override
14
24
Widget build (BuildContext context) {
15
25
return Login (
16
- onLoginPress: () =>
17
- AutoRouter .of (context).navigate (const AddMealScreenRoute ()),
26
+ emailController: _emailController,
27
+ passwordController: _passwordController,
28
+ onLoginPress: () async {
29
+ final auth = GetIt .I .get <AuthProvider >();
30
+ await auth.signIn (_emailController.text, _passwordController.text);
31
+ if (auth.isConnected ()) {
32
+ // ignore: use_build_context_synchronously
33
+ AutoRouter .of (context).navigate (const HomeScreenRoute ());
34
+ } else {
35
+ // ignore: use_build_context_synchronously
36
+ ScaffoldMessenger .of (context).showSnackBar (
37
+ const SnackBar (
38
+ content: Text ('Login failed' ),
39
+ ),
40
+ );
41
+ }
42
+ },
18
43
onRegisterPress: () =>
19
44
AutoRouter .of (context).navigate (const RegisterScreenRoute ()),
20
45
);
@@ -25,13 +50,19 @@ class Login extends StatelessWidget {
25
50
final void Function ()? onLoginPress;
26
51
final void Function ()? onRegisterPress;
27
52
final double screenWidth;
53
+ final TextEditingController ? _emailController;
54
+ final TextEditingController ? _passwordController;
28
55
29
56
const Login ({
30
57
this .onLoginPress,
31
58
this .onRegisterPress,
32
59
this .screenWidth = 0 ,
60
+ TextEditingController ? emailController,
61
+ TextEditingController ? passwordController,
33
62
Key ? key,
34
- }) : super (key: key);
63
+ }) : _emailController = emailController,
64
+ _passwordController = passwordController,
65
+ super (key: key);
35
66
36
67
@override
37
68
Widget build (BuildContext context) {
@@ -99,14 +130,16 @@ class Login extends StatelessWidget {
99
130
],
100
131
),
101
132
const SizedBox (height: 40 ),
102
- const MainTextField (
133
+ MainTextField (
134
+ controller: _emailController,
103
135
name: 'Email' ,
104
- icon: Icon (Icons .email_outlined),
136
+ icon: const Icon (Icons .email_outlined),
105
137
),
106
138
const SizedBox (height: 20 ),
107
- const MainTextField (
139
+ MainTextField (
140
+ controller: _passwordController,
108
141
name: 'Password' ,
109
- icon: Icon (Icons .lock_outlined),
142
+ icon: const Icon (Icons .lock_outlined),
110
143
obscureText: true ,
111
144
),
112
145
const SizedBox (height: 40 ),
0 commit comments