Skip to content

Commit b166e74

Browse files
author
Wilker Oliveira
committed
refactor: setState removed and Selector Provider added
1 parent 50e0fb3 commit b166e74

File tree

11 files changed

+254
-156
lines changed

11 files changed

+254
-156
lines changed

lib/generated/i18n.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,18 @@ class S {
5858
return Intl.message("Extrato", name: 'statement');
5959
}
6060

61+
String get payments {
62+
return Intl.message("Pagamentos", name: 'payments');
63+
}
64+
65+
String get invoices {
66+
return Intl.message("Faturas", name: 'invoices');
67+
}
68+
69+
String get more {
70+
return Intl.message("Mais", name: 'more');
71+
}
72+
6173
String get app_name {
6274
return Intl.message("Mobile Bank", name: 'app_name');
6375
}

lib/generated/messages_all.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ class $pt_BR extends MessageLookupByLibrary {
2121
"close_button" : MessageLookupByLibrary.simpleMessage("Fechar"),
2222
"current_balance" : MessageLookupByLibrary.simpleMessage("Saldo Atual"),
2323
"statement" : MessageLookupByLibrary.simpleMessage("Extrato"),
24+
"payments" : MessageLookupByLibrary.simpleMessage("Pagamentos"),
25+
"invoices" : MessageLookupByLibrary.simpleMessage("Faturas"),
26+
"more" : MessageLookupByLibrary.simpleMessage("Mais"),
2427
"app_name" : MessageLookupByLibrary.simpleMessage("Mobile Bank"),
2528
"cvv" : MessageLookupByLibrary.simpleMessage("CVV"),
2629
"password" : MessageLookupByLibrary.simpleMessage("Senha"),
@@ -89,6 +92,9 @@ class $en_US extends MessageLookupByLibrary {
8992
"close_button" : MessageLookupByLibrary.simpleMessage("Close"),
9093
"current_balance" : MessageLookupByLibrary.simpleMessage("Current Balance"),
9194
"statement" : MessageLookupByLibrary.simpleMessage("Statement"),
95+
"payments" : MessageLookupByLibrary.simpleMessage("Payments"),
96+
"invoices" : MessageLookupByLibrary.simpleMessage("Invoices"),
97+
"more" : MessageLookupByLibrary.simpleMessage("More"),
9298
"app_name" : MessageLookupByLibrary.simpleMessage("Mobile Bank"),
9399
"cvv" : MessageLookupByLibrary.simpleMessage("CVV"),
94100
"due_date" : MessageLookupByLibrary.simpleMessage("Due Date"),

lib/src/app.dart

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import 'package:bank_cards/src/repository/card/statement_card_repository.dart';
88
import 'package:bank_cards/src/repository/login/login_repository.dart';
99
import 'package:bank_cards/src/ui/resources/app_styles.dart';
1010
import 'package:bank_cards/src/ui/screens/splash_screen.dart';
11+
import 'package:bank_cards/src/viewmodel/card/card_viewmodel.dart';
1112
import 'package:bank_cards/src/viewmodel/login_viewmodel.dart';
1213
import 'package:flutter/material.dart';
1314
import 'package:flutter/services.dart';
@@ -47,8 +48,13 @@ class App extends StatelessWidget {
4748
Provider.of<LoginRepository>(context, listen: false).currentUser,
4849
),
4950
ChangeNotifierProvider(
50-
create: (context) => LoginViewModel(Provider.of(context, listen: false)),
51-
)
51+
create: (context) =>
52+
LoginViewModel(Provider.of(context, listen: false)),
53+
),
54+
ChangeNotifierProvider(
55+
create: (context) =>
56+
CardViewModel(repository: Provider.of(context, listen: false)),
57+
),
5258
],
5359
child: MaterialApp(
5460
localizationsDelegates: [

lib/src/ui/resources/app_dimen.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ class AppDimen {
7777
static const double menuItemBorderRadius = 15.0;
7878
static const double menuItemImageWidth = 48.0;
7979
static const double menuItemTextSize = 12.0;
80+
static const double menuItemPadding = 4.0;
8081

8182
static const double creditCardHeight = 126.0;
8283
static const double creditCardWidth = 390.0;
Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
import 'package:bank_cards/generated/i18n.dart';
2+
import 'package:bank_cards/src/ui/resources/app_dimen.dart';
3+
import 'package:bank_cards/src/ui/resources/app_styles.dart';
4+
import 'package:bank_cards/src/models/card/card.dart' as model;
5+
import 'package:bank_cards/src/viewmodel/base/base_viewmodel.dart';
6+
import 'package:bank_cards/src/viewmodel/card/card_viewmodel.dart';
7+
import 'package:flutter/material.dart';
8+
import 'package:flutter_screenutil/flutter_screenutil.dart';
9+
import 'package:provider/provider.dart';
10+
import 'package:bank_cards/src/utils/formatter.dart';
11+
12+
class CardDetailWidget extends StatefulWidget {
13+
final model.Card privateCard;
14+
final CardViewModel cardViewModel;
15+
16+
const CardDetailWidget(
17+
{Key key, @required this.privateCard, this.cardViewModel})
18+
: super(key: key);
19+
20+
@override
21+
State<StatefulWidget> createState() => _CardDetailWidgetState();
22+
}
23+
24+
class _CardDetailWidgetState extends State<CardDetailWidget> {
25+
//CardViewModel cardViewModel;
26+
27+
@override
28+
void initState() {
29+
super.initState();
30+
31+
//this.cardViewModel = Provider.of<CardViewModel>(context, listen: false);
32+
}
33+
34+
@override
35+
Widget build(BuildContext context) {
36+
return Container(
37+
margin: EdgeInsets.only(
38+
left: ScreenUtil.instance.setWidth(AppDimen.marginCardDetail),
39+
right: ScreenUtil.instance.setWidth(AppDimen.marginCardDetail),
40+
),
41+
child: Container(
42+
color: Colors.transparent,
43+
margin: EdgeInsets.all(
44+
ScreenUtil.instance.setWidth(AppDimen.defaultMargin),
45+
),
46+
child: Column(
47+
mainAxisAlignment: MainAxisAlignment.start,
48+
children: <Widget>[
49+
Row(
50+
mainAxisAlignment: MainAxisAlignment.spaceBetween,
51+
children: <Widget>[
52+
Padding(
53+
padding: EdgeInsets.all(AppDimen.paddingCardDetail),
54+
child: Text(
55+
S.of(context).due_date,
56+
style: AppStyles.titleDetailStyle(),
57+
),
58+
),
59+
Selector<CardViewModel, ViewState>(
60+
selector: (buildContext, model) => model.state,
61+
builder: (context, value, child) => Padding(
62+
padding: EdgeInsets.all(AppDimen.paddingCardDetail),
63+
child: Text(
64+
value != ViewState.Busy && widget.privateCard != null
65+
? widget.privateCard.dueDate.toString()
66+
: " - ",
67+
style: AppStyles.valueDetailStyle(Colors.white),
68+
),
69+
),
70+
),
71+
],
72+
),
73+
Container(
74+
height: ScreenUtil.instance.setHeight(1),
75+
color: Colors.green,
76+
),
77+
Row(
78+
mainAxisAlignment: MainAxisAlignment.spaceBetween,
79+
children: <Widget>[
80+
Padding(
81+
padding: EdgeInsets.all(AppDimen.paddingCardDetail),
82+
child: Text(
83+
S.of(context).limit,
84+
style: AppStyles.titleDetailStyle(),
85+
),
86+
),
87+
Selector<CardViewModel, ViewState>(
88+
selector: (buildContext, model) => model.state,
89+
builder: (context, value, child) => Padding(
90+
padding: EdgeInsets.all(AppDimen.paddingCardDetail),
91+
child: Text(
92+
value != ViewState.Busy && widget.privateCard != null
93+
? Formatter.moneyFormatter(widget.privateCard.limit)
94+
: " - ",
95+
style: AppStyles.valueDetailStyle(
96+
getAmountColor(widget.privateCard == null
97+
? 0
98+
: widget.privateCard.limit),
99+
),
100+
),
101+
),
102+
),
103+
],
104+
),
105+
Container(
106+
height: ScreenUtil.instance.setHeight(1),
107+
color: Colors.green,
108+
),
109+
Row(
110+
mainAxisAlignment: MainAxisAlignment.spaceBetween,
111+
children: <Widget>[
112+
Padding(
113+
padding: EdgeInsets.all(AppDimen.paddingCardDetail),
114+
child: Text(
115+
S.of(context).available,
116+
style: AppStyles.titleDetailStyle(),
117+
),
118+
),
119+
Selector<CardViewModel, ViewState>(
120+
selector: (buildContext, model) => model.state,
121+
builder: (context, value, child) => Padding(
122+
padding: EdgeInsets.all(AppDimen.paddingCardDetail),
123+
child: Text(
124+
value != ViewState.Busy && widget.privateCard != null
125+
? Formatter.moneyFormatter(
126+
widget.privateCard.limitAvailable)
127+
: " - ",
128+
style: AppStyles.valueDetailStyle(
129+
getAmountColor(widget.privateCard == null
130+
? 0
131+
: widget.privateCard.limitAvailable),
132+
),
133+
),
134+
),
135+
),
136+
],
137+
),
138+
],
139+
),
140+
),
141+
);
142+
}
143+
144+
Color getAmountColor(amount) {
145+
return amount <= 0 ? Colors.red : Colors.green;
146+
}
147+
}

0 commit comments

Comments
 (0)