1
+ import 'dart:async' ;
2
+
1
3
import 'package:clipboard/clipboard.dart' ;
2
4
import 'package:flood_mobile/Api/auth_api.dart' ;
3
5
import 'package:flood_mobile/Components/toast_component.dart' ;
@@ -14,6 +16,9 @@ import '../Components/custom_dialog_animation.dart';
14
16
import '../Provider/login_status_data_provider.dart' ;
15
17
16
18
class LoginScreen extends StatefulWidget {
19
+ final int ? themeIndex;
20
+
21
+ const LoginScreen ({Key ? key, this .themeIndex}) : super (key: key);
17
22
@override
18
23
_LoginScreenState createState () => _LoginScreenState ();
19
24
}
@@ -26,16 +31,23 @@ class _LoginScreenState extends State<LoginScreen> {
26
31
TextEditingController urlController =
27
32
new TextEditingController (text: 'http://localhost:3000' );
28
33
final _formKey = GlobalKey <FormState >();
34
+ late int themeIndex;
35
+
36
+ @override
37
+ void initState () {
38
+ super .initState ();
39
+ themeIndex = widget.themeIndex ?? 2 ;
40
+ }
29
41
30
42
@override
31
43
Widget build (BuildContext context) {
32
44
double hp = MediaQuery .of (context).size.height;
33
45
double wp = MediaQuery .of (context).size.width;
34
46
return LoadingOverlay (
35
- color: ThemeProvider .theme (2 ).primaryColor,
47
+ color: ThemeProvider .theme (themeIndex ).primaryColor,
36
48
isLoading: showSpinner,
37
49
child: Scaffold (
38
- backgroundColor: ThemeProvider .theme (2 ).primaryColor,
50
+ backgroundColor: ThemeProvider .theme (themeIndex ).primaryColor,
39
51
body: SafeArea (
40
52
child: Form (
41
53
key: _formKey,
@@ -59,7 +71,7 @@ class _LoginScreenState extends State<LoginScreen> {
59
71
Text (
60
72
'Welcome to Flood' ,
61
73
style: TextStyle (
62
- color: ThemeProvider .theme (2 )
74
+ color: ThemeProvider .theme (themeIndex )
63
75
.textTheme
64
76
.bodyLarge!
65
77
.color! ,
@@ -69,7 +81,7 @@ class _LoginScreenState extends State<LoginScreen> {
69
81
Text (
70
82
'Sign in to your account' ,
71
83
style: TextStyle (
72
- color: ThemeProvider .theme (2 )
84
+ color: ThemeProvider .theme (themeIndex )
73
85
.textTheme
74
86
.bodyLarge!
75
87
.color! ,
@@ -86,15 +98,15 @@ class _LoginScreenState extends State<LoginScreen> {
86
98
key: Key ('Url TextField' ),
87
99
controller: urlController,
88
100
style: TextStyle (
89
- color: ThemeProvider .theme (2 )
101
+ color: ThemeProvider .theme (themeIndex )
90
102
.textTheme
91
103
.bodyLarge
92
104
? .color,
93
105
),
94
106
decoration: InputDecoration (
95
107
prefixIcon: Icon (
96
108
Icons .link,
97
- color: ThemeProvider .theme (2 )
109
+ color: ThemeProvider .theme (themeIndex )
98
110
.textTheme
99
111
.bodyLarge!
100
112
.color! ,
@@ -103,35 +115,35 @@ class _LoginScreenState extends State<LoginScreen> {
103
115
labelStyle: TextStyle (
104
116
fontFamily: 'Montserrat' ,
105
117
fontWeight: FontWeight .bold,
106
- color: ThemeProvider .theme (2 )
118
+ color: ThemeProvider .theme (themeIndex )
107
119
.textTheme
108
120
.bodyLarge!
109
121
.color! ),
110
122
focusedBorder: UnderlineInputBorder (
111
123
borderSide: BorderSide (
112
- color:
113
- ThemeProvider . theme ( 2 ) .primaryColorDark,
124
+ color: ThemeProvider . theme (themeIndex)
125
+ .primaryColorDark,
114
126
),
115
127
),
116
128
border: UnderlineInputBorder (
117
129
borderSide: BorderSide (
118
- color: ThemeProvider .theme (2 )
130
+ color: ThemeProvider .theme (themeIndex )
119
131
.textTheme
120
132
.bodyLarge!
121
133
.color! ,
122
134
),
123
135
),
124
136
disabledBorder: UnderlineInputBorder (
125
137
borderSide: BorderSide (
126
- color: ThemeProvider .theme (2 )
138
+ color: ThemeProvider .theme (themeIndex )
127
139
.textTheme
128
140
.bodyLarge!
129
141
.color! ,
130
142
),
131
143
),
132
144
enabledBorder: UnderlineInputBorder (
133
145
borderSide: BorderSide (
134
- color: ThemeProvider .theme (2 )
146
+ color: ThemeProvider .theme (themeIndex )
135
147
.textTheme
136
148
.bodyLarge!
137
149
.color! ,
@@ -157,7 +169,7 @@ class _LoginScreenState extends State<LoginScreen> {
157
169
},
158
170
icon: Icon (
159
171
Icons .paste,
160
- color: ThemeProvider .theme (2 )
172
+ color: ThemeProvider .theme (themeIndex )
161
173
.textTheme
162
174
.bodyLarge!
163
175
.color! ,
@@ -176,15 +188,15 @@ class _LoginScreenState extends State<LoginScreen> {
176
188
key: Key ('Username TextField' ),
177
189
controller: usernameController,
178
190
style: TextStyle (
179
- color: ThemeProvider .theme (2 )
191
+ color: ThemeProvider .theme (themeIndex )
180
192
.textTheme
181
193
.bodyLarge!
182
194
.color! ,
183
195
),
184
196
decoration: InputDecoration (
185
197
prefixIcon: Icon (
186
198
Icons .person,
187
- color: ThemeProvider .theme (2 )
199
+ color: ThemeProvider .theme (themeIndex )
188
200
.textTheme
189
201
.bodyLarge!
190
202
.color! ,
@@ -193,34 +205,35 @@ class _LoginScreenState extends State<LoginScreen> {
193
205
labelStyle: TextStyle (
194
206
fontFamily: 'Montserrat' ,
195
207
fontWeight: FontWeight .bold,
196
- color: ThemeProvider .theme (2 )
208
+ color: ThemeProvider .theme (themeIndex )
197
209
.textTheme
198
210
.bodyLarge!
199
211
.color! ),
200
212
focusedBorder: UnderlineInputBorder (
201
213
borderSide: BorderSide (
202
- color: ThemeProvider .theme (2 ).primaryColorDark,
214
+ color: ThemeProvider .theme (themeIndex)
215
+ .primaryColorDark,
203
216
),
204
217
),
205
218
border: UnderlineInputBorder (
206
219
borderSide: BorderSide (
207
- color: ThemeProvider .theme (2 )
220
+ color: ThemeProvider .theme (themeIndex )
208
221
.textTheme
209
222
.bodyLarge!
210
223
.color! ,
211
224
),
212
225
),
213
226
disabledBorder: UnderlineInputBorder (
214
227
borderSide: BorderSide (
215
- color: ThemeProvider .theme (2 )
228
+ color: ThemeProvider .theme (themeIndex )
216
229
.textTheme
217
230
.bodyLarge!
218
231
.color! ,
219
232
),
220
233
),
221
234
enabledBorder: UnderlineInputBorder (
222
235
borderSide: BorderSide (
223
- color: ThemeProvider .theme (2 )
236
+ color: ThemeProvider .theme (themeIndex )
224
237
.textTheme
225
238
.bodyLarge!
226
239
.color! ,
@@ -245,7 +258,7 @@ class _LoginScreenState extends State<LoginScreen> {
245
258
key: Key ('Password TextField' ),
246
259
controller: passwordController,
247
260
style: TextStyle (
248
- color: ThemeProvider .theme (2 )
261
+ color: ThemeProvider .theme (themeIndex )
249
262
.textTheme
250
263
.bodyLarge
251
264
? .color,
@@ -254,43 +267,43 @@ class _LoginScreenState extends State<LoginScreen> {
254
267
decoration: InputDecoration (
255
268
prefixIcon: Icon (
256
269
Icons .lock_outline,
257
- color: ThemeProvider .theme (2 )
270
+ color: ThemeProvider .theme (themeIndex )
258
271
.textTheme
259
272
.bodyLarge!
260
273
.color! ,
261
274
),
262
275
labelText: 'Password' ,
263
276
labelStyle: TextStyle (
264
277
fontWeight: FontWeight .bold,
265
- color: ThemeProvider .theme (2 )
278
+ color: ThemeProvider .theme (themeIndex )
266
279
.textTheme
267
280
.bodyLarge!
268
281
.color! ),
269
282
focusedBorder: UnderlineInputBorder (
270
283
borderSide: BorderSide (
271
- color:
272
- ThemeProvider . theme ( 2 ) .primaryColorDark,
284
+ color: ThemeProvider . theme (themeIndex)
285
+ .primaryColorDark,
273
286
),
274
287
),
275
288
border: UnderlineInputBorder (
276
289
borderSide: BorderSide (
277
- color: ThemeProvider .theme (2 )
290
+ color: ThemeProvider .theme (themeIndex )
278
291
.textTheme
279
292
.bodyLarge!
280
293
.color! ,
281
294
),
282
295
),
283
296
disabledBorder: UnderlineInputBorder (
284
297
borderSide: BorderSide (
285
- color: ThemeProvider .theme (2 )
298
+ color: ThemeProvider .theme (themeIndex )
286
299
.textTheme
287
300
.bodyLarge!
288
301
.color! ,
289
302
),
290
303
),
291
304
enabledBorder: UnderlineInputBorder (
292
305
borderSide: BorderSide (
293
- color: ThemeProvider .theme (2 )
306
+ color: ThemeProvider .theme (themeIndex )
294
307
.textTheme
295
308
.bodyLarge!
296
309
.color! ,
@@ -316,7 +329,7 @@ class _LoginScreenState extends State<LoginScreen> {
316
329
(showPass)
317
330
? Icons .visibility
318
331
: Icons .visibility_off,
319
- color: ThemeProvider .theme (2 )
332
+ color: ThemeProvider .theme (themeIndex )
320
333
.textTheme
321
334
.bodyLarge!
322
335
.color! ,
@@ -352,8 +365,10 @@ class _LoginScreenState extends State<LoginScreen> {
352
365
Toasts .showSuccessToast (
353
366
msg: 'Login Successful' );
354
367
Navigator .of (context).pushNamedAndRemoveUntil (
355
- Routes .homeScreenRoute,
356
- (Route <dynamic > route) => false );
368
+ Routes .homeScreenRoute,
369
+ (Route <dynamic > route) => false ,
370
+ arguments: themeIndex,
371
+ );
357
372
SharedPreferences prefs =
358
373
await SharedPreferences .getInstance ();
359
374
bool batteryOptimizationInfoSeen =
@@ -407,8 +422,8 @@ class _LoginScreenState extends State<LoginScreen> {
407
422
shape: RoundedRectangleBorder (
408
423
borderRadius: BorderRadius .circular (14.0 ),
409
424
),
410
- backgroundColor:
411
- ThemeProvider . theme ( 2 ) .primaryColorDark,
425
+ backgroundColor: ThemeProvider . theme (themeIndex)
426
+ .primaryColorDark,
412
427
),
413
428
child: Center (
414
429
child: Text (
0 commit comments