@@ -13,9 +13,17 @@ class SearchMealsScreen extends StatefulWidget {
13
13
}
14
14
15
15
class _SearchMealsScreenState extends State <SearchMealsScreen > {
16
+ SearchMealsBloc _searchMealsBloc;
17
+
18
+ @override
19
+ void initState () {
20
+ _searchMealsBloc = SearchMealsBloc ();
21
+ super .initState ();
22
+ }
23
+
16
24
@override
17
25
void dispose () {
18
- searchMealsBloc .dispose ();
26
+ _searchMealsBloc .dispose ();
19
27
super .dispose ();
20
28
}
21
29
@@ -63,7 +71,7 @@ class _SearchMealsScreenState extends State<SearchMealsScreen> {
63
71
64
72
Widget _buildResultSearchMeals (MediaQueryData mediaQuery) {
65
73
return StreamBuilder (
66
- stream: searchMealsBloc .resultSearchMealsByKeyword,
74
+ stream: _searchMealsBloc .resultSearchMealsByKeyword,
67
75
builder: (BuildContext context, AsyncSnapshot <SearchMeals > snapshot) {
68
76
if (snapshot.hasData) {
69
77
SearchMeals searchMeals = snapshot.data;
@@ -78,7 +86,7 @@ class _SearchMealsScreenState extends State<SearchMealsScreen> {
78
86
itemCount: searchMeals.searchMealsItems.length,
79
87
itemBuilder: (context, index) {
80
88
var searchMealsItem = searchMeals.searchMealsItems[index];
81
- return CardMeal (searchMealsItem);
89
+ return CardMeal (searchMealsItem, _searchMealsBloc );
82
90
},
83
91
);
84
92
} else if (snapshot.hasError) {
@@ -100,7 +108,7 @@ class _SearchMealsScreenState extends State<SearchMealsScreen> {
100
108
horizontal: 12.0 ,
101
109
vertical: 8.0 ,
102
110
),
103
- child: TextFieldSearch (),
111
+ child: TextFieldSearch (_searchMealsBloc ),
104
112
),
105
113
);
106
114
}
@@ -125,8 +133,9 @@ class _SearchMealsScreenState extends State<SearchMealsScreen> {
125
133
126
134
class CardMeal extends StatefulWidget {
127
135
final SearchMealsItem searchMealsItem;
136
+ final SearchMealsBloc searchMealsBloc;
128
137
129
- CardMeal (this .searchMealsItem);
138
+ CardMeal (this .searchMealsItem, this .searchMealsBloc );
130
139
131
140
@override
132
141
_CardMealState createState () => _CardMealState ();
@@ -206,7 +215,7 @@ class _CardMealState extends State<CardMeal> {
206
215
onTap: () {
207
216
var isFavorite = widget.searchMealsItem.isFavorite;
208
217
if (isFavorite) {
209
- searchMealsBloc
218
+ widget. searchMealsBloc
210
219
.deleteFavoriteMealById (
211
220
widget.searchMealsItem.idMeal)
212
221
.then ((status) {
@@ -216,14 +225,14 @@ class _CardMealState extends State<CardMeal> {
216
225
});
217
226
} else {
218
227
Future <LookupMealsById > lookupMealsById =
219
- searchMealsBloc.getDetailMealById (
228
+ widget. searchMealsBloc.getDetailMealById (
220
229
widget.searchMealsItem.idMeal);
221
230
lookupMealsById.then ((value) {
222
231
if (value != null ) {
223
232
var item = value.lookupMealsbyIdItems[0 ];
224
233
FavoriteMeal favoriteMeal =
225
234
FavoriteMeal .fromJson (item.toJson ());
226
- searchMealsBloc
235
+ widget. searchMealsBloc
227
236
.addFavoriteMeal (favoriteMeal)
228
237
.then ((status) {
229
238
setState (() {
@@ -265,6 +274,10 @@ class _CardMealState extends State<CardMeal> {
265
274
}
266
275
267
276
class TextFieldSearch extends StatefulWidget {
277
+ final SearchMealsBloc searchMealsBloc;
278
+
279
+ TextFieldSearch (this .searchMealsBloc);
280
+
268
281
@override
269
282
_TextFieldSearchState createState () => _TextFieldSearchState ();
270
283
}
@@ -297,12 +310,12 @@ class _TextFieldSearchState extends State<TextFieldSearch> {
297
310
onChanged: (value) {
298
311
setState (() {});
299
312
if (value.isEmpty) {
300
- searchMealsBloc.searchMealsByKeyword (value);
313
+ widget. searchMealsBloc.searchMealsByKeyword (value);
301
314
}
302
315
},
303
316
onSubmitted: (value) {
304
317
setState (() {});
305
- searchMealsBloc.searchMealsByKeyword (value);
318
+ widget. searchMealsBloc.searchMealsByKeyword (value);
306
319
},
307
320
),
308
321
),
@@ -311,7 +324,7 @@ class _TextFieldSearchState extends State<TextFieldSearch> {
311
324
: GestureDetector (
312
325
onTap: () {
313
326
setState (() => _textEditingControllerKeyword.clear ());
314
- searchMealsBloc.searchMealsByKeyword ("" );
327
+ widget. searchMealsBloc.searchMealsByKeyword ("" );
315
328
},
316
329
child: Icon (
317
330
Icons .clear,
0 commit comments