From e97b069fecba0581d91e13f9ad32f01e2de3f752 Mon Sep 17 00:00:00 2001 From: Tushar Ojha Date: Wed, 6 Jan 2021 13:29:22 +0530 Subject: [PATCH 1/3] [veggieseasons] added restore defaults feature --- .../veggieseasons/lib/data/preferences.dart | 6 +++ .../veggieseasons/lib/screens/settings.dart | 52 +++++++++++++++++-- experimental/veggieseasons/lib/styles.dart | 8 +++ 3 files changed, 61 insertions(+), 5 deletions(-) diff --git a/experimental/veggieseasons/lib/data/preferences.dart b/experimental/veggieseasons/lib/data/preferences.dart index 01c345a8584..71baf69335c 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 6accd80d6a9..e4b1ed1d41e 100644 --- a/experimental/veggieseasons/lib/screens/settings.dart +++ b/experimental/veggieseasons/lib/screens/settings.dart @@ -23,7 +23,8 @@ class VeggieCategorySettingsScreen extends StatelessWidget { static Route _routeBuilder(BuildContext context, Object argument) { return CupertinoPageRoute( - builder: (context) => VeggieCategorySettingsScreen(restorationId: 'category'), + builder: (context) => + VeggieCategorySettingsScreen(restorationId: 'category'), title: 'Preferred Categories', ); } @@ -136,9 +137,10 @@ class CalorieSettingsScreen extends StatelessWidget { label: cals.toString(), icon: SettingsIcon( icon: Styles.checkIcon, - foregroundColor: snapshot.hasData && snapshot.data == cals - ? CupertinoColors.activeBlue - : Styles.transparentColor, + foregroundColor: + snapshot.hasData && snapshot.data == cals + ? CupertinoColors.activeBlue + : Styles.transparentColor, backgroundColor: Styles.transparentColor, ), onPress: snapshot.hasData @@ -211,6 +213,44 @@ class SettingsScreen extends StatelessWidget { ); } + SettingsItem _buildRestoreDefaultsItem( + BuildContext context, Preferences prefs) { + return SettingsItem( + label: 'Restore Defaults', + icon: SettingsIcon( + backgroundColor: Styles.iconRed, + 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 preferences?', + ), + 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); @@ -219,7 +259,8 @@ class SettingsScreen extends StatelessWidget { restorationId: restorationId, child: CupertinoPageScaffold( child: Container( - color: Styles.scaffoldBackground(CupertinoTheme.brightnessOf(context)), + color: + Styles.scaffoldBackground(CupertinoTheme.brightnessOf(context)), child: CustomScrollView( restorationId: 'list', slivers: [ @@ -235,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 3516ed60394..5eec52fa0bd 100644 --- a/experimental/veggieseasons/lib/styles.dart +++ b/experimental/veggieseasons/lib/styles.dart @@ -216,12 +216,20 @@ abstract class Styles { static const Color iconGold = Color(0xffdba800); + static const Color iconRed = Color(0xffFF0000); + static const preferenceIcon = IconData( 0xf443, fontFamily: CupertinoIcons.iconFont, fontPackage: CupertinoIcons.iconFontPackage, ); + static const resetIcon = IconData( + 0xf4c4, + fontFamily: CupertinoIcons.iconFont, + fontPackage: CupertinoIcons.iconFontPackage, + ); + static const calorieIcon = IconData( 0xf3bb, fontFamily: CupertinoIcons.iconFont, From 6de647f986992d5d0d41db1947a91b3c724568d2 Mon Sep 17 00:00:00 2001 From: Tushar Ojha Date: Sat, 9 Jan 2021 15:29:28 +0530 Subject: [PATCH 2/3] [veggieseasons] small fixes --- experimental/veggieseasons/lib/screens/settings.dart | 2 +- experimental/veggieseasons/lib/styles.dart | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/experimental/veggieseasons/lib/screens/settings.dart b/experimental/veggieseasons/lib/screens/settings.dart index e4b1ed1d41e..fdb8d436047 100644 --- a/experimental/veggieseasons/lib/screens/settings.dart +++ b/experimental/veggieseasons/lib/screens/settings.dart @@ -228,7 +228,7 @@ class SettingsScreen extends StatelessWidget { builder: (context) => CupertinoAlertDialog( title: Text('Are you sure?'), content: Text( - 'Are you sure you want to reset the current preferences?', + 'Are you sure you want to reset the current settings?', ), actions: [ CupertinoDialogAction( diff --git a/experimental/veggieseasons/lib/styles.dart b/experimental/veggieseasons/lib/styles.dart index 5eec52fa0bd..e81da87066a 100644 --- a/experimental/veggieseasons/lib/styles.dart +++ b/experimental/veggieseasons/lib/styles.dart @@ -206,7 +206,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); @@ -216,7 +216,7 @@ abstract class Styles { static const Color iconGold = Color(0xffdba800); - static const Color iconRed = Color(0xffFF0000); + static const Color iconRed = Color(0xffff0000); static const preferenceIcon = IconData( 0xf443, @@ -246,5 +246,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); } From 54aee21102e4437c32ae7f7aa1b5612eaa77a369 Mon Sep 17 00:00:00 2001 From: Tushar Ojha Date: Thu, 14 Jan 2021 13:24:25 +0530 Subject: [PATCH 3/3] added systemRed color instead of hardcoded --- experimental/veggieseasons/lib/screens/settings.dart | 2 +- experimental/veggieseasons/lib/styles.dart | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/experimental/veggieseasons/lib/screens/settings.dart b/experimental/veggieseasons/lib/screens/settings.dart index fdb8d436047..b26b1ea5b51 100644 --- a/experimental/veggieseasons/lib/screens/settings.dart +++ b/experimental/veggieseasons/lib/screens/settings.dart @@ -218,7 +218,7 @@ class SettingsScreen extends StatelessWidget { return SettingsItem( label: 'Restore Defaults', icon: SettingsIcon( - backgroundColor: Styles.iconRed, + backgroundColor: CupertinoColors.systemRed, icon: Styles.resetIcon, ), content: SettingsNavigationIndicator(), diff --git a/experimental/veggieseasons/lib/styles.dart b/experimental/veggieseasons/lib/styles.dart index e81da87066a..850d940074a 100644 --- a/experimental/veggieseasons/lib/styles.dart +++ b/experimental/veggieseasons/lib/styles.dart @@ -216,8 +216,6 @@ abstract class Styles { static const Color iconGold = Color(0xffdba800); - static const Color iconRed = Color(0xffff0000); - static const preferenceIcon = IconData( 0xf443, fontFamily: CupertinoIcons.iconFont,