frontend compliant with backend
This commit is contained in:
@@ -9,6 +9,9 @@ class ProfilePage extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _ProfilePageState extends State<ProfilePage> {
|
||||
Future<UserPreferences> _prefs = loadUserPreferences();
|
||||
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return ListView(
|
||||
@@ -24,66 +27,82 @@ class _ProfilePageState extends State<ProfilePage> {
|
||||
child: Text('Curious traveler', style: TextStyle(fontSize: 24))
|
||||
),
|
||||
|
||||
Padding(padding: EdgeInsets.all(10)),
|
||||
Divider(indent: 25, endIndent: 25),
|
||||
Padding(padding: EdgeInsets.all(10)),
|
||||
Divider(indent: 25, endIndent: 25, height: 50),
|
||||
|
||||
Padding(
|
||||
padding: EdgeInsets.only(left: 10, right: 10, top: 0, bottom: 10),
|
||||
child: Text('Please rate your personal preferences so that we can taylor your experience.', style: TextStyle(fontSize: 18))
|
||||
Center(
|
||||
child: Padding(
|
||||
padding: EdgeInsets.only(left: 10, right: 10, top: 0, bottom: 10),
|
||||
child: Text('For a tailored experience, please rate your discovery preferences.', style: TextStyle(fontSize: 18))
|
||||
),
|
||||
),
|
||||
|
||||
// Now the sliders
|
||||
ImportanceSliders()
|
||||
FutureBuilder(future: _prefs, builder: futureSliders)
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
Widget futureSliders(BuildContext context, AsyncSnapshot<UserPreferences> snapshot) {
|
||||
if (snapshot.connectionState == ConnectionState.done) {
|
||||
UserPreferences prefs = snapshot.data!;
|
||||
|
||||
return Column(
|
||||
children: [
|
||||
PreferenceSliders(prefs: [prefs.maxTime, prefs.maxDetour]),
|
||||
Divider(indent: 25, endIndent: 25, height: 50),
|
||||
PreferenceSliders(prefs: [prefs.sightseeing, prefs.shopping, prefs.nature])
|
||||
]
|
||||
);
|
||||
} else {
|
||||
return CircularProgressIndicator();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
class ImportanceSliders extends StatefulWidget {
|
||||
class PreferenceSliders extends StatefulWidget {
|
||||
final List<SinglePreference> prefs;
|
||||
|
||||
PreferenceSliders({required this.prefs});
|
||||
|
||||
@override
|
||||
State<ImportanceSliders> createState() => _ImportanceSlidersState();
|
||||
State<PreferenceSliders> createState() => _PreferenceSlidersState();
|
||||
}
|
||||
|
||||
|
||||
class _ImportanceSlidersState extends State<ImportanceSliders> {
|
||||
|
||||
UserPreferences _prefs = UserPreferences();
|
||||
|
||||
List<Card> _createSliders() {
|
||||
List<Card> sliders = [];
|
||||
for (SinglePreference pref in _prefs.preferences) {
|
||||
sliders.add(Card(
|
||||
child: ListTile(
|
||||
leading: pref.icon,
|
||||
title: Text(pref.name),
|
||||
subtitle: Slider(
|
||||
value: pref.value.toDouble(),
|
||||
min: 0,
|
||||
max: 10,
|
||||
divisions: 10,
|
||||
label: pref.value.toString(),
|
||||
onChanged: (double newValue) {
|
||||
setState(() {
|
||||
pref.value = newValue.toInt();
|
||||
_prefs.save();
|
||||
});
|
||||
},
|
||||
)
|
||||
),
|
||||
margin: const EdgeInsets.only(left: 10, right: 10, top: 10, bottom: 0),
|
||||
shadowColor: Colors.grey,
|
||||
));
|
||||
}
|
||||
return sliders;
|
||||
}
|
||||
class _PreferenceSlidersState extends State<PreferenceSliders> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
List<Card> sliders = [];
|
||||
for (SinglePreference pref in widget.prefs) {
|
||||
sliders.add(
|
||||
Card(
|
||||
child: ListTile(
|
||||
leading: pref.icon,
|
||||
title: Text(pref.name),
|
||||
subtitle: Slider(
|
||||
value: pref.value.toDouble(),
|
||||
min: pref.minVal.toDouble(),
|
||||
max: pref.maxVal.toDouble(),
|
||||
divisions: pref.maxVal - pref.minVal,
|
||||
label: pref.value.toString(),
|
||||
onChanged: (double newValue) {
|
||||
setState(() {
|
||||
pref.value = newValue.toInt();
|
||||
pref.save();
|
||||
});
|
||||
},
|
||||
)
|
||||
),
|
||||
margin: const EdgeInsets.only(left: 10, right: 10, top: 10, bottom: 0),
|
||||
shadowColor: Colors.grey,
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
return Column(children: _createSliders());
|
||||
return Column(
|
||||
children: sliders);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user