You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
2.5 KiB
108 lines
2.5 KiB
// SPDX-FileCopyrightText: Copyright 2023 Open Mobile Platform LLC <community@omp.ru> |
|
// SPDX-License-Identifier: BSD-3-Clause |
|
import 'package:flutter/widgets.dart'; |
|
import 'package:scoped_model/scoped_model.dart'; |
|
import 'package:shared_preferences/shared_preferences.dart'; |
|
|
|
/// Model for [SharedPreferencesPage] |
|
class SharedPreferencesModel extends Model { |
|
/// Get [ScopedModel] |
|
static SharedPreferencesModel of(BuildContext context) => |
|
ScopedModel.of<SharedPreferencesModel>(context); |
|
|
|
/// Get Aurora info |
|
Future<SharedPreferences> get _prefs async => |
|
await SharedPreferences.getInstance(); |
|
|
|
/// Error |
|
String? _error; |
|
|
|
/// Public error |
|
String? get error => _error; |
|
|
|
/// Public is error |
|
bool get isError => _error != null; |
|
|
|
/// Read shared preferences |
|
Map<String, dynamic>? _readValues; |
|
|
|
/// Public values |
|
Map<String, dynamic>? get readValues => _readValues; |
|
|
|
/// Save int value |
|
Future<void> setValueInt(int value) async { |
|
try { |
|
await (await _prefs).setInt('int', value); |
|
} catch (e) { |
|
_error = e.toString(); |
|
} |
|
notifyListeners(); |
|
} |
|
|
|
/// Save bool value |
|
Future<void> setValueBool(bool value) async { |
|
try { |
|
await (await _prefs).setBool('bool', value); |
|
} catch (e) { |
|
_error = e.toString(); |
|
} |
|
notifyListeners(); |
|
} |
|
|
|
/// Save double value |
|
Future<void> setValueDouble(double value) async { |
|
try { |
|
await (await _prefs).setDouble('double', value); |
|
} catch (e) { |
|
_error = e.toString(); |
|
} |
|
notifyListeners(); |
|
} |
|
|
|
/// Save string value |
|
Future<void> setValueString(String value) async { |
|
try { |
|
await (await _prefs).setString('string', value); |
|
} catch (e) { |
|
_error = e.toString(); |
|
} |
|
notifyListeners(); |
|
} |
|
|
|
/// Save list value |
|
Future<void> setValueList(List<String> value) async { |
|
try { |
|
await (await _prefs).setStringList('list', value); |
|
} catch (e) { |
|
_error = e.toString(); |
|
} |
|
notifyListeners(); |
|
} |
|
|
|
/// Clear all data |
|
Future<void> clear() async { |
|
try { |
|
await (await _prefs).clear(); |
|
} catch (e) { |
|
_error = e.toString(); |
|
} |
|
notifyListeners(); |
|
} |
|
|
|
/// Read values |
|
Future<void> reloadValues() async { |
|
try { |
|
final prefs = await _prefs; |
|
_readValues = { |
|
'int': prefs.getInt('int'), |
|
'bool': prefs.getBool('bool'), |
|
'double': prefs.getDouble('double'), |
|
'string': prefs.getString('string'), |
|
'list': prefs.getStringList('list'), |
|
}; |
|
} catch (e) { |
|
_error = e.toString(); |
|
} |
|
notifyListeners(); |
|
} |
|
}
|
|
|