mirror of
https://github.com/flutter/samples.git
synced 2025-11-10 14:58:34 +00:00
[VeggieSeasons] added restore defaults feature (#639)
This commit is contained in:
@@ -50,6 +50,12 @@ class Preferences extends ChangeNotifier {
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
Future<void> restoreDefaults() async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.clear();
|
||||
load();
|
||||
}
|
||||
|
||||
void load() {
|
||||
_loading = _loadFromSharedPrefs();
|
||||
}
|
||||
|
||||
@@ -213,6 +213,44 @@ class SettingsScreen extends StatelessWidget {
|
||||
);
|
||||
}
|
||||
|
||||
SettingsItem _buildRestoreDefaultsItem(
|
||||
BuildContext context, Preferences prefs) {
|
||||
return SettingsItem(
|
||||
label: 'Restore Defaults',
|
||||
icon: SettingsIcon(
|
||||
backgroundColor: CupertinoColors.systemRed,
|
||||
icon: Styles.resetIcon,
|
||||
),
|
||||
content: SettingsNavigationIndicator(),
|
||||
onPress: () {
|
||||
showCupertinoDialog<void>(
|
||||
context: context,
|
||||
builder: (context) => CupertinoAlertDialog(
|
||||
title: Text('Are you sure?'),
|
||||
content: Text(
|
||||
'Are you sure you want to reset the current settings?',
|
||||
),
|
||||
actions: <Widget>[
|
||||
CupertinoDialogAction(
|
||||
isDestructiveAction: true,
|
||||
child: Text('Yes'),
|
||||
onPressed: () async {
|
||||
await prefs.restoreDefaults();
|
||||
Navigator.pop(context);
|
||||
},
|
||||
),
|
||||
CupertinoDialogAction(
|
||||
isDefaultAction: true,
|
||||
child: Text('No'),
|
||||
onPressed: () => Navigator.pop(context),
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final prefs = Provider.of<Preferences>(context);
|
||||
@@ -238,6 +276,7 @@ class SettingsScreen extends StatelessWidget {
|
||||
items: [
|
||||
_buildCaloriesItem(context, prefs),
|
||||
_buildCategoriesItem(context, prefs),
|
||||
_buildRestoreDefaultsItem(context, prefs),
|
||||
],
|
||||
),
|
||||
],
|
||||
|
||||
@@ -198,7 +198,7 @@ abstract class Styles {
|
||||
: CupertinoColors.darkBackgroundGray;
|
||||
|
||||
static Color settingsLineation(Brightness brightness) =>
|
||||
brightness == Brightness.light ? Color(0xffbcbbc1) : Color(0xFF4C4B4B);
|
||||
brightness == Brightness.light ? Color(0xffbcbbc1) : Color(0xff4c4b4b);
|
||||
|
||||
static const Color settingsBackground = Color(0xffefeff4);
|
||||
|
||||
@@ -214,6 +214,12 @@ abstract class Styles {
|
||||
fontPackage: CupertinoIcons.iconFontPackage,
|
||||
);
|
||||
|
||||
static const resetIcon = IconData(
|
||||
0xf4c4,
|
||||
fontFamily: CupertinoIcons.iconFont,
|
||||
fontPackage: CupertinoIcons.iconFontPackage,
|
||||
);
|
||||
|
||||
static const calorieIcon = IconData(
|
||||
0xf3bb,
|
||||
fontFamily: CupertinoIcons.iconFont,
|
||||
@@ -230,5 +236,5 @@ abstract class Styles {
|
||||
|
||||
static const ColorFilter desaturatedColorFilter =
|
||||
// 222222 is a random color that has low color saturation.
|
||||
ColorFilter.mode(Color(0xFF222222), BlendMode.saturation);
|
||||
ColorFilter.mode(Color(0xff222222), BlendMode.saturation);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user