Skip to content

Commit 50e0fb3

Browse files
author
Wilker Oliveira
committed
LoginScreen changed to use Selector
1 parent e4b009b commit 50e0fb3

File tree

4 files changed

+52
-71
lines changed

4 files changed

+52
-71
lines changed

.flutter-plugins-dependencies

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"_info":"// This is a generated file; do not edit or check into version control.","dependencyGraph":[{"name":"cloud_firestore","dependencies":["firebase_core"]},{"name":"firebase_analytics","dependencies":[]},{"name":"firebase_auth","dependencies":["firebase_core"]},{"name":"firebase_core","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","dependencies":[]},{"name":"flutter_facebook_login","dependencies":[]},{"name":"google_sign_in","dependencies":["google_sign_in_web"]},{"name":"google_sign_in_web","dependencies":[]},{"name":"package_info","dependencies":[]},{"name":"path_provider","dependencies":[]},{"name":"sqflite","dependencies":[]},{"name":"wifi","dependencies":[]}]}
1+
{"_info":"// This is a generated file; do not edit or check into version control.","dependencyGraph":[{"name":"cloud_firestore","dependencies":["firebase_core"]},{"name":"firebase_analytics","dependencies":[]},{"name":"firebase_auth","dependencies":["firebase_core"]},{"name":"firebase_core","dependencies":[]},{"name":"flutter_facebook_login","dependencies":[]},{"name":"google_sign_in","dependencies":[]},{"name":"package_info","dependencies":[]},{"name":"path_provider","dependencies":[]},{"name":"sqflite","dependencies":[]},{"name":"wifi","dependencies":[]}]}

lib/provider_setup.dart

-52
This file was deleted.

lib/src/app.dart

+35-4
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,55 @@
1-
import 'package:bank_cards/provider_setup.dart';
1+
import 'package:bank_cards/src/models/user.dart';
2+
import 'package:bank_cards/src/repository/card/card_repository.dart';
3+
import 'package:bank_cards/src/repository/card/invoice_card_repository.dart';
4+
import 'package:bank_cards/src/repository/card/service/card/card_service.dart';
5+
import 'package:bank_cards/src/repository/card/service/invoice/invoice_service.dart';
6+
import 'package:bank_cards/src/repository/card/service/statement/statement_card_service.dart';
7+
import 'package:bank_cards/src/repository/card/statement_card_repository.dart';
8+
import 'package:bank_cards/src/repository/login/login_repository.dart';
29
import 'package:bank_cards/src/ui/resources/app_styles.dart';
310
import 'package:bank_cards/src/ui/screens/splash_screen.dart';
11+
import 'package:bank_cards/src/viewmodel/login_viewmodel.dart';
412
import 'package:flutter/material.dart';
513
import 'package:flutter/services.dart';
614
import 'package:flutter_localizations/flutter_localizations.dart';
715
import 'package:provider/provider.dart';
816
import 'package:bank_cards/generated/i18n.dart';
9-
import 'package:bank_cards/src/router.dart' ;
17+
import 'package:bank_cards/src/router.dart';
1018

1119
class App extends StatelessWidget {
1220
@override
1321
Widget build(BuildContext context) {
14-
1522
SystemChrome.setPreferredOrientations([
1623
DeviceOrientation.portraitUp,
1724
DeviceOrientation.portraitDown,
1825
]);
1926

2027
return MultiProvider(
21-
providers: providers,
28+
providers: [
29+
Provider.value(value: CardService()),
30+
Provider.value(value: StatementCardService()),
31+
Provider.value(value: InvoiceService()),
32+
Provider.value(value: LoginRepository()),
33+
ProxyProvider<CardService, CardRepository>(
34+
update: (context, service, repository) =>
35+
CardRepository(service: service),
36+
),
37+
ProxyProvider<StatementCardService, StatementCardRepository>(
38+
update: (context, service, repository) =>
39+
StatementCardRepository(service: service),
40+
),
41+
ProxyProvider<InvoiceService, InvoiceCardRepository>(
42+
update: (context, service, repository) =>
43+
InvoiceCardRepository(service: service),
44+
),
45+
StreamProvider<User>(
46+
create: (context) =>
47+
Provider.of<LoginRepository>(context, listen: false).currentUser,
48+
),
49+
ChangeNotifierProvider(
50+
create: (context) => LoginViewModel(Provider.of(context, listen: false)),
51+
)
52+
],
2253
child: MaterialApp(
2354
localizationsDelegates: [
2455
S.delegate,

lib/src/ui/screens/login/login_screen.dart

+16-14
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import 'package:bank_cards/src/ui/resources/app_images.dart';
66
import 'package:bank_cards/src/ui/resources/app_styles.dart';
77
import 'package:bank_cards/src/ui/resources/app_color.dart';
88
import 'package:bank_cards/src/ui/resources/decorations.dart';
9-
import 'package:bank_cards/src/ui/screens/base/base_widget.dart';
109
import 'package:bank_cards/src/ui/utility/screen_utility.dart';
1110
import 'package:bank_cards/src/ui/validation/common_form_validation.dart';
1211
import 'package:bank_cards/src/ui/validation/register_form_validation.dart';
@@ -27,6 +26,7 @@ class LoginScreen extends StatefulWidget {
2726
class _LoginScreenState extends State<LoginScreen>
2827
with CommonFormValidation, RegisterFormValidation {
2928
final _formKey = GlobalKey<FormState>();
29+
LoginViewModel model;
3030

3131
FocusNode _emailFocus;
3232
FocusNode _password;
@@ -57,6 +57,7 @@ class _LoginScreenState extends State<LoginScreen>
5757
@override
5858
Widget build(BuildContext context) {
5959
this._size = MediaQuery.of(context).size;
60+
this.model = Provider.of<LoginViewModel>(context);
6061

6162
return Scaffold(
6263
body: Container(
@@ -78,14 +79,11 @@ class _LoginScreenState extends State<LoginScreen>
7879
}
7980

8081
Widget _body() {
81-
return BaseWidget<LoginViewModel>(
82-
model: LoginViewModel(Provider.of(context)),
83-
onModelReady: (model) async {},
84-
builder: (mainContext, model, child) => Container(
82+
return Container(
8583
child: Column(
8684
mainAxisAlignment: MainAxisAlignment.start,
8785
children: <Widget>[
88-
loginForm(model),
86+
loginForm(),
8987
Row(
9088
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
9189
children: <Widget>[
@@ -177,7 +175,6 @@ class _LoginScreenState extends State<LoginScreen>
177175
),
178176
],
179177
),
180-
),
181178
);
182179
}
183180

@@ -194,7 +191,9 @@ class _LoginScreenState extends State<LoginScreen>
194191
}
195192
}
196193

197-
Widget loginForm(LoginViewModel model) {
194+
Widget loginForm() {
195+
var model = Provider.of<LoginViewModel>(context);
196+
198197
TextStyle style = AppStyles.formTextStyle(AppColor.darkBlue,
199198
ScreenUtil.instance.setSp(AppDimen.formTextSize));
200199

@@ -296,12 +295,15 @@ class _LoginScreenState extends State<LoginScreen>
296295
SizedBox(
297296
height: ScreenUtil.instance.setHeight(AppDimen.extraMargin),
298297
),
299-
model.state == ViewState.Busy
300-
? SpinKitThreeBounce(
301-
color: Colors.white,
302-
size: ScreenUtil.instance.setWidth(AppDimen.loadingSize),
303-
)
304-
: loginButton,
298+
Selector<LoginViewModel, ViewState>(
299+
builder: (context, value, child) => value == ViewState.Busy
300+
? SpinKitThreeBounce(
301+
color: Colors.white,
302+
size: ScreenUtil.instance.setWidth(AppDimen.loadingSize),
303+
)
304+
: loginButton,
305+
selector: (buildContext, model) => model.state,
306+
),
305307
SizedBox(
306308
height: ScreenUtil.instance.setHeight(AppDimen.extraMargin),
307309
),

0 commit comments

Comments
 (0)