From fb206aee84373636203d70d3e1e928999d13d14f Mon Sep 17 00:00:00 2001 From: Gregory Velichko Date: Sat, 20 Apr 2024 11:57:12 +0300 Subject: [PATCH] Add system theme api level check --- lib/pages/settings.dart | 50 ++++++++++++++++------------ lib/providers/settings_provider.dart | 4 +-- 2 files changed, 30 insertions(+), 24 deletions(-) diff --git a/lib/pages/settings.dart b/lib/pages/settings.dart index 770d36a..ada33f8 100644 --- a/lib/pages/settings.dart +++ b/lib/pages/settings.dart @@ -82,28 +82,34 @@ class _SettingsPageState extends State { if (settingsProvider.prefs == null) settingsProvider.initializeSettings(); initUpdateIntervalInterpolator(); processIntervalSliderValue(settingsProvider.updateIntervalSliderVal); - var themeDropdown = DropdownButtonFormField( - decoration: InputDecoration(labelText: tr('theme')), - value: settingsProvider.theme, - items: [ - DropdownMenuItem( - value: ThemeSettings.dark, - child: Text(tr('dark')), - ), - DropdownMenuItem( - value: ThemeSettings.light, - child: Text(tr('light')), - ), - DropdownMenuItem( - value: ThemeSettings.system, - child: Text(tr('followSystem')), - ) - ], - onChanged: (value) { - if (value != null) { - settingsProvider.theme = value; - } - }); + + var themeDropdown = FutureBuilder( + builder: (ctx, val) { + return DropdownButtonFormField( + decoration: InputDecoration(labelText: tr('theme')), + value: settingsProvider.theme, + items: [ + DropdownMenuItem( + value: ThemeSettings.light, + child: Text(tr('light')), + ), + DropdownMenuItem( + value: ThemeSettings.dark, + child: Text(tr('dark')), + ), + if ((val.data?.version.sdkInt ?? 0) >= 29) DropdownMenuItem( + value: ThemeSettings.system, + child: Text(tr('followSystem')), + ) + ], + onChanged: (value) { + if (value != null) { + settingsProvider.theme = value; + } + }); + }, + future: DeviceInfoPlugin().androidInfo + ); var colourDropdown = DropdownButtonFormField( decoration: InputDecoration(labelText: tr('colour')), diff --git a/lib/providers/settings_provider.dart b/lib/providers/settings_provider.dart index 36052b8..cfb4a64 100644 --- a/lib/providers/settings_provider.dart +++ b/lib/providers/settings_provider.dart @@ -18,7 +18,7 @@ String obtainiumTempId = 'imranr98_obtainium_${GitHub().hosts[0]}'; String obtainiumId = 'dev.imranr.obtainium'; String obtainiumUrl = 'https://github.com/ImranR98/Obtainium'; -enum ThemeSettings { system, light, dark } +enum ThemeSettings { light, dark, system } enum ColourSettings { basic, materialYou } @@ -60,7 +60,7 @@ class SettingsProvider with ChangeNotifier { ThemeSettings get theme { return ThemeSettings - .values[prefs?.getInt('theme') ?? ThemeSettings.system.index]; + .values[prefs?.getInt('theme') ?? ThemeSettings.light.index]; } set theme(ThemeSettings t) {