-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathfilters_screen.dart
130 lines (121 loc) · 3.5 KB
/
filters_screen.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
import 'package:flutter/material.dart';
import '../widgets/main_drawer.dart';
class FiltersScreen extends StatefulWidget {
static const routeName = '/filters';
final Function saveFilters;
final Map<String, bool> currentFilters;
FiltersScreen(this.currentFilters, this.saveFilters);
@override
_FiltersScreenState createState() => _FiltersScreenState();
}
class _FiltersScreenState extends State<FiltersScreen> {
bool _glutenFree = false;
bool _vegetarian = false;
bool _vegan = false;
bool _lactoseFree = false;
@override
void initState() {
_glutenFree = widget.currentFilters['gluten'];
_lactoseFree = widget.currentFilters['lactose'];
_vegetarian = widget.currentFilters['vegetarian'];
_vegan = widget.currentFilters['vegan'];
super.initState();
}
Widget _buildSwitchListTile(String title, String description,
bool currentValue, Function updateValue) {
return SwitchListTile(
title: Text(title),
value: currentValue,
subtitle: Text(description),
onChanged: updateValue,
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Your Filters'),
actions: <Widget>[
IconButton(
icon: Icon(Icons.save),
onPressed: () {
final selectedFilters = {
'gluten': _glutenFree,
'lactose': _lactoseFree,
'vegan': _vegan,
'vegetarian': _vegetarian,
};
widget.saveFilters(selectedFilters);
},
),
],
),
drawer: MainDrawer(),
body: Column(
children: <Widget>[
Container(
padding: EdgeInsets.all(20),
child: Text(
'Adjust your meal selection.',
style: Theme.of(context).textTheme.title,
),
),
Expanded(
child: ListView(
children: <Widget>[
_buildSwitchListTile(
'Gluten-free',
'Only include gluten-free meals.',
_glutenFree,
(newValue) {
setState(
() {
_glutenFree = newValue;
},
);
},
),
_buildSwitchListTile(
'Lactose-free',
'Only include Lactose-free meals.',
_lactoseFree,
(newValue) {
setState(
() {
_lactoseFree = newValue;
},
);
},
),
_buildSwitchListTile(
'Vegetarian',
'Only include vegetarian meals.',
_vegetarian,
(newValue) {
setState(
() {
_vegetarian = newValue;
},
);
},
),
_buildSwitchListTile(
'Vegan',
'Only include vegetarian meals.',
_vegan,
(newValue) {
setState(
() {
_vegan = newValue;
},
);
},
),
],
),
),
],
),
);
}
}