write list and nested properties as json
parent
f67f44a030
commit
ac994ad6e0
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"group": "Gruppe 1",
|
"group": "Gruppe 1",
|
||||||
"HITT_time": 35,
|
"HITT_time": 35,
|
||||||
"relapse categories": ["App stresst mich", "langeweile", "lunge bruacht es"],
|
"relapse_categories": ["App stresst mich", "langeweile", "lunge braucht es"],
|
||||||
"mood_query": {
|
"mood_query": {
|
||||||
"days": ["Montag", "Freitag"],
|
"days": ["Montag", "Freitag"],
|
||||||
"hours": 8,
|
"hours": 8,
|
||||||
|
@ -12,5 +12,4 @@
|
||||||
"hours": 9,
|
"hours": 9,
|
||||||
"minutes": 30
|
"minutes": 30
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
"hours": 8,
|
"hours": 8,
|
||||||
"minutes": 30
|
"minutes": 30
|
||||||
},
|
},
|
||||||
"relapse categories": ["App stresst mich", "langeweile", "lunge bruacht es"],
|
"relapse_categories": ["App stresst mich", "langeweile", "lunge braucht es"],
|
||||||
"mood_query": {
|
"mood_query": {
|
||||||
"days": ["Montag", "Freitag"],
|
"days": ["Montag", "Freitag"],
|
||||||
"hours": 10,
|
"hours": 10,
|
||||||
|
@ -16,5 +16,4 @@
|
||||||
"hours": 11,
|
"hours": 11,
|
||||||
"minutes": 30
|
"minutes": 30
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,44 @@
|
||||||
|
import 'package:smoke_cess_app/service/json_service.dart';
|
||||||
|
|
||||||
class Settings {
|
class Settings {
|
||||||
final String group;
|
final String group;
|
||||||
final String key;
|
final List<String>? relapseCategories;
|
||||||
//final List<String> relapseCategories;
|
final QueryConfig moodQuery;
|
||||||
|
final QueryConfig sleepQuery;
|
||||||
|
final TimeConfig? chessTime;
|
||||||
|
|
||||||
Settings(this.group, this.key); //, this.relapseCategories);
|
Settings(this.group, this.relapseCategories, this.moodQuery, this.sleepQuery,
|
||||||
|
this.chessTime);
|
||||||
|
|
||||||
Settings.fromJson(Map<String, dynamic> json)
|
Settings.fromJson(Map<String, dynamic> json)
|
||||||
: group = json['group'].toString(),
|
: group = json['group'] as String,
|
||||||
key = json['key'].toString()
|
relapseCategories = jsonPropertyAsList(json['relapse_categories']),
|
||||||
//relapseCategories = json['relapse_categories']
|
moodQuery = QueryConfig.fromJson(json['mood_query']),
|
||||||
;
|
sleepQuery = QueryConfig.fromJson(json['sleep_query']),
|
||||||
|
chessTime =
|
||||||
|
json['chess_time'] ? TimeConfig.fromJson(json['chess_time']) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
class QueryConfig {
|
||||||
|
final int hours;
|
||||||
|
final int minutes;
|
||||||
|
final List<String>? days;
|
||||||
|
|
||||||
|
QueryConfig(this.hours, this.minutes, this.days);
|
||||||
|
|
||||||
|
QueryConfig.fromJson(Map<String, dynamic> json)
|
||||||
|
: hours = json['hours'] as int,
|
||||||
|
minutes = json['minutes'] as int,
|
||||||
|
days = jsonPropertyAsList(json['days']);
|
||||||
|
}
|
||||||
|
|
||||||
|
class TimeConfig {
|
||||||
|
final int hours;
|
||||||
|
final int minutes;
|
||||||
|
|
||||||
|
TimeConfig(this.hours, this.minutes);
|
||||||
|
|
||||||
|
TimeConfig.fromJson(Map<String, dynamic> json)
|
||||||
|
: hours = json['hours'] as int,
|
||||||
|
minutes = json['minutes'] as int;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,12 @@
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
const String configJSONPath = 'assets/config.json';
|
const String configJSONPath = 'assets/group3.json';
|
||||||
|
|
||||||
Future<Map<String, dynamic>> loadLocalConfigJSON() async {
|
Future<Map<String, dynamic>> loadLocalConfigJSON() async {
|
||||||
String content = await rootBundle.loadString(configJSONPath);
|
String content = await rootBundle.loadString(configJSONPath);
|
||||||
return jsonDecode(content);
|
return jsonDecode(content);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<String>? jsonPropertyAsList(dynamic property) =>
|
||||||
|
property != null ? List.from(property) : null;
|
||||||
|
|
|
@ -3,28 +3,45 @@ 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';
|
||||||
|
|
||||||
//access group setting which was saved in local storage
|
//access group setting which was saved in local storage
|
||||||
Future<String?> getGroup() {
|
Future<String?> getGroup() => _getStringSetting('group');
|
||||||
return getStringSetting('group');
|
|
||||||
}
|
|
||||||
|
|
||||||
void setStringSetting(String settingKey, String settingValue) =>
|
Future<List<String>?> getRelapseCategories() =>
|
||||||
|
_getStringListSetting('relapse_categories');
|
||||||
|
|
||||||
|
Future<List<String>?> getSleepQueryDaysCategories() =>
|
||||||
|
_getStringListSetting('sleep_query_days');
|
||||||
|
|
||||||
|
Future<int?> getSleepQueryHours() => _getIntSetting('sleep_query_hours');
|
||||||
|
Future<int?> getSleepQueryMinutes() => _getIntSetting('sleep_query_minutes');
|
||||||
|
|
||||||
|
Future<List<String>?> getMoodQueryDaysCategories() =>
|
||||||
|
_getStringListSetting('mood_query_days');
|
||||||
|
|
||||||
|
Future<int?> getMoodQueryHours() => _getIntSetting('mood_query_hours');
|
||||||
|
Future<int?> getMoodQueryMinutes() => _getIntSetting('mood_query_minutes');
|
||||||
|
|
||||||
|
void _setStringSetting(String settingKey, String settingValue) =>
|
||||||
SharedPreferences.getInstance()
|
SharedPreferences.getInstance()
|
||||||
.then((pref) => pref.setString(settingKey, settingValue));
|
.then((pref) => pref.setString(settingKey, settingValue));
|
||||||
|
|
||||||
Future<String?> getStringSetting(String settingKey) =>
|
Future<String?> _getStringSetting(String settingKey) =>
|
||||||
SharedPreferences.getInstance().then((pref) => pref.getString(settingKey));
|
SharedPreferences.getInstance().then((pref) => pref.getString(settingKey));
|
||||||
|
|
||||||
void setIntSetting(String settingKey, int settingValue) =>
|
void _setIntSetting(String settingKey, int settingValue) =>
|
||||||
SharedPreferences.getInstance()
|
SharedPreferences.getInstance()
|
||||||
.then((pref) => pref.setInt(settingKey, settingValue));
|
.then((pref) => pref.setInt(settingKey, settingValue));
|
||||||
|
|
||||||
Future<int?> getIntSetting(String settingKey) =>
|
Future<int?> _getIntSetting(String settingKey) =>
|
||||||
SharedPreferences.getInstance().then((pref) => pref.getInt(settingKey));
|
SharedPreferences.getInstance().then((pref) => pref.getInt(settingKey));
|
||||||
|
|
||||||
void setStringList(String settingKey, List<String> list) =>
|
void _setStringListSetting(String settingKey, List<String> list) =>
|
||||||
SharedPreferences.getInstance()
|
SharedPreferences.getInstance()
|
||||||
.then((pref) => pref.setStringList(settingKey, list));
|
.then((pref) => pref.setStringList(settingKey, list));
|
||||||
|
|
||||||
|
Future<List<String>?> _getStringListSetting(String settingKey) =>
|
||||||
|
SharedPreferences.getInstance()
|
||||||
|
.then((pref) => pref.getStringList(settingKey));
|
||||||
|
|
||||||
//Add other setters and getters if needed
|
//Add other setters and getters if needed
|
||||||
//other possible SharedPreferences Types: Int, Bool, Double, StringList
|
//other possible SharedPreferences Types: Int, Bool, Double, StringList
|
||||||
//see https://pub.dev/packages/shared_preferences
|
//see https://pub.dev/packages/shared_preferences
|
||||||
|
@ -32,13 +49,16 @@ void setStringList(String settingKey, List<String> list) =>
|
||||||
Future<void> loadSettings() async {
|
Future<void> loadSettings() async {
|
||||||
Map<String, dynamic> configJSON = await loadLocalConfigJSON();
|
Map<String, dynamic> configJSON = await loadLocalConfigJSON();
|
||||||
Settings settings = Settings.fromJson(configJSON);
|
Settings settings = Settings.fromJson(configJSON);
|
||||||
print(settings.group);
|
|
||||||
saveSettings(settings);
|
saveSettings(settings);
|
||||||
String gruppe = (await getGroup())!;
|
|
||||||
print('Gruppe: $gruppe');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void saveSettings(Settings settings) {
|
void saveSettings(Settings settings) {
|
||||||
setStringSetting('group', settings.group);
|
_setStringSetting('group', settings.group);
|
||||||
setStringSetting('key', settings.key);
|
_setStringListSetting('relapse_categories', settings.relapseCategories!);
|
||||||
|
_setStringListSetting('mood_query_days', settings.moodQuery.days!);
|
||||||
|
_setIntSetting('mood_query_hours', settings.moodQuery.hours);
|
||||||
|
_setIntSetting('mood_query_minutes', settings.moodQuery.minutes);
|
||||||
|
_setStringListSetting('sleep_query_days', settings.sleepQuery.days!);
|
||||||
|
_setIntSetting('sleep_query_hours', settings.sleepQuery.hours);
|
||||||
|
_setIntSetting('sleep_query_minutes', settings.sleepQuery.minutes);
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,6 +64,8 @@ flutter:
|
||||||
# - images/a_dot_ham.jpeg
|
# - images/a_dot_ham.jpeg
|
||||||
assets:
|
assets:
|
||||||
- config.json
|
- config.json
|
||||||
|
- group1.json
|
||||||
|
- group3.json
|
||||||
|
|
||||||
# An image asset can refer to one or more resolution-specific "variants", see
|
# An image asset can refer to one or more resolution-specific "variants", see
|
||||||
# https://flutter.dev/assets-and-images/#resolution-aware
|
# https://flutter.dev/assets-and-images/#resolution-aware
|
||||||
|
|
Loading…
Reference in New Issue