made settingsservice to collection of util functions to prevent diffrent instances and therefore different states

main
Julian Gegner 2023-02-19 14:24:39 +01:00
parent 4e2dd41adc
commit e4cfa701d6
4 changed files with 44 additions and 65 deletions

View File

@ -16,7 +16,6 @@ class MyHomePage extends StatefulWidget {
class MyHomePageState extends State<MyHomePage> { class MyHomePageState extends State<MyHomePage> {
int _selectedIndex = 4; int _selectedIndex = 4;
final SettingsService settingsService = SettingsService();
final List<String> _titles = [ final List<String> _titles = [
'Stimmung', 'Stimmung',
@ -33,17 +32,15 @@ class MyHomePageState extends State<MyHomePage> {
SettingsPage(), SettingsPage(),
]; ];
void _onItemTapped(int index) { Future<void> _onItemTapped(int index) async {
setState(() async { bool isConfigured = (await getGroup()) != null;
(await settingsService.getGroup() != null) print('Gruppe: ${await getGroup()}, isConfigured: $isConfigured');
setState(() {
isConfigured
? _selectedIndex = index ? _selectedIndex = index
: showDialog( : showDialog(
context: context, context: context,
builder: (BuildContext context) { builder: (BuildContext context) {
Future.delayed(
const Duration(seconds: 3),
() => Navigator.of(context)
.pop(true)); //Dismiss popup after 3 seconds
return const MissingConfigPopup(); return const MissingConfigPopup();
}); });
}); });

View File

@ -3,7 +3,6 @@ import 'package:smoke_cess_app/service/settings_service.dart';
class SettingsPage extends StatelessWidget { class SettingsPage extends StatelessWidget {
SettingsPage({super.key}); SettingsPage({super.key});
SettingsService service = SettingsService();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -17,7 +16,7 @@ class SettingsPage extends StatelessWidget {
style: ElevatedButton.styleFrom( style: ElevatedButton.styleFrom(
textStyle: const TextStyle(fontSize: 20)), textStyle: const TextStyle(fontSize: 20)),
onPressed: () { onPressed: () {
service.loadSettings(); loadSettings();
}, },
child: const Text('Read JSON'), child: const Text('Read JSON'),
) )

View File

@ -11,7 +11,6 @@ class StopWatchTimerPage extends StatefulWidget {
} }
class StopWatchTimerPageState extends State<StopWatchTimerPage> { class StopWatchTimerPageState extends State<StopWatchTimerPage> {
SettingsService settings = SettingsService();
Duration duration = const Duration(minutes: 1); Duration duration = const Duration(minutes: 1);
Timer? timer; Timer? timer;
@ -19,21 +18,11 @@ class StopWatchTimerPageState extends State<StopWatchTimerPage> {
@override @override
void initState() { void initState() {
setDurationWithSetting();
super.initState(); super.initState();
} }
void setDurationWithSetting() {
settings.getIntSetting('workout_duration_minutes').then((workoutMinutes) =>
{setState(() => duration = Duration(minutes: workoutMinutes ?? 10))});
}
void reset() { void reset() {
if (countDown) { setState(() => duration = const Duration());
setDurationWithSetting();
} else {
setState(() => duration = const Duration());
}
} }
void startTimer() { void startTimer() {

View File

@ -2,48 +2,42 @@ import 'package:shared_preferences/shared_preferences.dart';
import 'package:smoke_cess_app/models/settings.dart'; import 'package:smoke_cess_app/models/settings.dart';
import 'package:smoke_cess_app/service/json_service.dart'; import 'package:smoke_cess_app/service/json_service.dart';
class SettingsService { final Future<SharedPreferences> _prefs = SharedPreferences.getInstance();
final Future<SharedPreferences> _prefs = SharedPreferences.getInstance();
SettingsService() { //access group setting which was saved in local storage
setIntSetting('workout_duration_minutes', 5); Future<String?> getGroup() {
} return getStringSetting('group');
}
//access group setting which was saved in local storage
Future<String?> getGroup() { void setStringSetting(String settingKey, String settingValue) =>
return getStringSetting('group'); _prefs.then((pref) => pref.setString(settingKey, settingValue));
}
Future<String?> getStringSetting(String settingKey) =>
void setStringSetting(String settingKey, String settingValue) => _prefs.then((pref) => pref.getString(settingKey));
_prefs.then((pref) => pref.setString(settingKey, settingValue));
void setIntSetting(String settingKey, int settingValue) =>
Future<String?> getStringSetting(String settingKey) => _prefs.then((pref) => pref.setInt(settingKey, settingValue));
_prefs.then((pref) => pref.getString(settingKey));
Future<int?> getIntSetting(String settingKey) =>
void setIntSetting(String settingKey, int settingValue) => _prefs.then((pref) => pref.getInt(settingKey));
_prefs.then((pref) => pref.setInt(settingKey, settingValue));
void setStringList(String settingKey, List<String> list) =>
Future<int?> getIntSetting(String settingKey) => _prefs.then((pref) => pref.setStringList(settingKey, list));
_prefs.then((pref) => pref.getInt(settingKey));
//Add other setters and getters if needed
void setStringList(String settingKey, List<String> list) => //other possible SharedPreferences Types: Int, Bool, Double, StringList
_prefs.then((pref) => pref.setStringList(settingKey, list)); //see https://pub.dev/packages/shared_preferences
//Add other setters and getters if needed Future<void> loadSettings() async {
//other possible SharedPreferences Types: Int, Bool, Double, StringList Map<String, dynamic> configJSON = await loadLocalConfigJSON();
//see https://pub.dev/packages/shared_preferences Settings settings = Settings.fromJson(configJSON);
print(settings.group);
Future<void> loadSettings() async { saveSettings(settings);
Map<String, dynamic> configJSON = await loadLocalConfigJSON(); String gruppe = (await getGroup())!;
Settings settings = Settings.fromJson(configJSON); print('Gruppe: $gruppe');
print(settings.group); }
saveSettings(settings);
String gruppe = (await getGroup())!; void saveSettings(Settings settings) {
print('Gruppe: $gruppe'); setStringSetting('group', settings.group);
} setStringSetting('key', settings.key);
void saveSettings(Settings settings) {
setStringSetting('group', settings.group);
setStringSetting('key', settings.key);
}
} }