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();
|
notifyListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<void> restoreDefaults() async {
|
||||||
|
final prefs = await SharedPreferences.getInstance();
|
||||||
|
await prefs.clear();
|
||||||
|
load();
|
||||||
|
}
|
||||||
|
|
||||||
void load() {
|
void load() {
|
||||||
_loading = _loadFromSharedPrefs();
|
_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
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final prefs = Provider.of<Preferences>(context);
|
final prefs = Provider.of<Preferences>(context);
|
||||||
@@ -238,6 +276,7 @@ class SettingsScreen extends StatelessWidget {
|
|||||||
items: [
|
items: [
|
||||||
_buildCaloriesItem(context, prefs),
|
_buildCaloriesItem(context, prefs),
|
||||||
_buildCategoriesItem(context, prefs),
|
_buildCategoriesItem(context, prefs),
|
||||||
|
_buildRestoreDefaultsItem(context, prefs),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -198,7 +198,7 @@ abstract class Styles {
|
|||||||
: CupertinoColors.darkBackgroundGray;
|
: CupertinoColors.darkBackgroundGray;
|
||||||
|
|
||||||
static Color settingsLineation(Brightness brightness) =>
|
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);
|
static const Color settingsBackground = Color(0xffefeff4);
|
||||||
|
|
||||||
@@ -214,6 +214,12 @@ abstract class Styles {
|
|||||||
fontPackage: CupertinoIcons.iconFontPackage,
|
fontPackage: CupertinoIcons.iconFontPackage,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
static const resetIcon = IconData(
|
||||||
|
0xf4c4,
|
||||||
|
fontFamily: CupertinoIcons.iconFont,
|
||||||
|
fontPackage: CupertinoIcons.iconFontPackage,
|
||||||
|
);
|
||||||
|
|
||||||
static const calorieIcon = IconData(
|
static const calorieIcon = IconData(
|
||||||
0xf3bb,
|
0xf3bb,
|
||||||
fontFamily: CupertinoIcons.iconFont,
|
fontFamily: CupertinoIcons.iconFont,
|
||||||
@@ -230,5 +236,5 @@ abstract class Styles {
|
|||||||
|
|
||||||
static const ColorFilter desaturatedColorFilter =
|
static const ColorFilter desaturatedColorFilter =
|
||||||
// 222222 is a random color that has low color saturation.
|
// 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