diff --git a/experimental/veggieseasons/lib/data/preferences.dart b/experimental/veggieseasons/lib/data/preferences.dart index 01c345a85..71baf6933 100644 --- a/experimental/veggieseasons/lib/data/preferences.dart +++ b/experimental/veggieseasons/lib/data/preferences.dart @@ -50,6 +50,12 @@ class Preferences extends ChangeNotifier { notifyListeners(); } + Future restoreDefaults() async { + final prefs = await SharedPreferences.getInstance(); + await prefs.clear(); + load(); + } + void load() { _loading = _loadFromSharedPrefs(); } diff --git a/experimental/veggieseasons/lib/screens/settings.dart b/experimental/veggieseasons/lib/screens/settings.dart index 6f44fcbea..b26b1ea5b 100644 --- a/experimental/veggieseasons/lib/screens/settings.dart +++ b/experimental/veggieseasons/lib/screens/settings.dart @@ -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( + context: context, + builder: (context) => CupertinoAlertDialog( + title: Text('Are you sure?'), + content: Text( + 'Are you sure you want to reset the current settings?', + ), + actions: [ + 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(context); @@ -238,6 +276,7 @@ class SettingsScreen extends StatelessWidget { items: [ _buildCaloriesItem(context, prefs), _buildCategoriesItem(context, prefs), + _buildRestoreDefaultsItem(context, prefs), ], ), ], diff --git a/experimental/veggieseasons/lib/styles.dart b/experimental/veggieseasons/lib/styles.dart index 5e28e5e7c..76a4656ec 100644 --- a/experimental/veggieseasons/lib/styles.dart +++ b/experimental/veggieseasons/lib/styles.dart @@ -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); }