From f136438a6c3df6403d5a935c730ea5a66d017ffe Mon Sep 17 00:00:00 2001 From: Aldrik Ramaekers Date: Wed, 17 Aug 2022 15:39:30 +0200 Subject: work --- lib/services/local_shift_provider_service.dart | 2 - lib/services/settings_service.dart | 80 ++++++++++++++++++++++++++ 2 files changed, 80 insertions(+), 2 deletions(-) create mode 100644 lib/services/settings_service.dart (limited to 'lib/services') diff --git a/lib/services/local_shift_provider_service.dart b/lib/services/local_shift_provider_service.dart index 2d00a1e..6839dff 100644 --- a/lib/services/local_shift_provider_service.dart +++ b/lib/services/local_shift_provider_service.dart @@ -34,7 +34,6 @@ class LocalShiftProviderService extends IProgramProviderService { final file = await _localFile; String content = jsonEncode(shifts); await file.writeAsString(content); - print('Writing to file: ' + content); } catch (e, stacktrace) { print(stacktrace); print(e); @@ -48,7 +47,6 @@ class LocalShiftProviderService extends IProgramProviderService { final Iterable iterable = await jsonDecode(contents); List data = List.from(iterable.map((model) => Shift.fromJson(model))); - print('Read from file: ' + contents); return data; } catch (e, stacktrace) { diff --git a/lib/services/settings_service.dart b/lib/services/settings_service.dart new file mode 100644 index 0000000..027ecc2 --- /dev/null +++ b/lib/services/settings_service.dart @@ -0,0 +1,80 @@ +import 'dart:convert'; +import 'dart:io'; + +import 'package:path_provider/path_provider.dart'; + +class Settings { + double salary; + + Settings({required this.salary}); + + Settings.fromJson(Map json) + : salary = double.parse(json['salary']); + + Map toJson() { + return { + 'salary': salary.toStringAsFixed(2), + }; + } +} + +class DefaultSettings extends Settings { + DefaultSettings() : super(salary: 13.75); + + DefaultSettings.fromJson(Map json) : super.fromJson(json); + + Map toJson() { + return { + 'salary': salary.toStringAsFixed(2), + }; + } +} + +class SettingsService { + Future get _localPath async { + final directory = await getApplicationDocumentsDirectory(); + return directory.path; + } + + Future get _localFile async { + final path = await _localPath; + File file = File('$path/settings.json'); + + bool exists = await file.exists(); + if (!exists) { + print('created settings.json'); + await file.create(); + await writeSettingsToFile(DefaultSettings()); + } + + return File('$path/settings.json'); + } + + Future writeSettingsToFile(Settings settings) async { + try { + final file = await _localFile; + String content = jsonEncode(settings); + print('writing to file: ' + content); + await file.writeAsString(content); + } catch (e, stacktrace) { + print(stacktrace); + print(e); + } + } + + Future readSettingsFromFile() async { + try { + final file = await _localFile; + final contents = await file.readAsString(); + print('read from file: ' + contents); + var raw = await jsonDecode(contents); + var settings = Settings.fromJson(raw); + return settings; + } catch (e, stacktrace) { + print(stacktrace); + print(e); + writeSettingsToFile(DefaultSettings()); + return DefaultSettings(); + } + } +} -- cgit v1.2.3-70-g09d2