initial
This commit is contained in:
98
lib/services/storage.dart
Normal file
98
lib/services/storage.dart
Normal file
@@ -0,0 +1,98 @@
|
||||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
import 'package:path_provider/path_provider.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
|
||||
class SettingsConnector {
|
||||
static Future<void> setBool(String key, bool value) async {
|
||||
var prefs = await SharedPreferences.getInstance();
|
||||
prefs.setBool(key, value);
|
||||
}
|
||||
|
||||
static Future<bool> getBool(String key, bool defaultValue) async {
|
||||
var prefs = await SharedPreferences.getInstance();
|
||||
return prefs.getBool(key) ?? defaultValue;
|
||||
}
|
||||
|
||||
/*static Future<bool> getRemoteBool(String key) async {
|
||||
var prefs = await SharedPreferences.getInstance();
|
||||
return prefs.getBool(key) ?? await RemoteConfigConnector.getBool(key);
|
||||
}*/
|
||||
|
||||
static Future<void> setInt(String key, int value) async {
|
||||
var prefs = await SharedPreferences.getInstance();
|
||||
prefs.setInt(key, value);
|
||||
}
|
||||
|
||||
static Future<int> getInt(String key, int defaultValue) async {
|
||||
var prefs = await SharedPreferences.getInstance();
|
||||
return prefs.getInt(key) ?? defaultValue;
|
||||
}
|
||||
|
||||
/*static Future<int> getRemoteInt(String key) async {
|
||||
var prefs = await SharedPreferences.getInstance();
|
||||
return prefs.getInt(key) ?? await RemoteConfigConnector.getInt(key);
|
||||
}*/
|
||||
}
|
||||
|
||||
class AssetConnector {
|
||||
static Future<String> getAssetString(String path) => rootBundle.loadString(path);
|
||||
|
||||
static getJson<JsonEncodable>(asset) async {
|
||||
final jsonString = await AssetConnector.getAssetString(asset);
|
||||
return jsonDecode(jsonString);
|
||||
}
|
||||
}
|
||||
|
||||
class DataConnector {
|
||||
|
||||
static Future<Directory> directory = getApplicationDocumentsDirectory();
|
||||
|
||||
static Future<void> saveJsonEncodable(key, List<JsonEncodable> value) async {
|
||||
var jsonString = json.encode(value);
|
||||
var file = await getFile('$key.json', create: true);
|
||||
await file!.writeAsString(jsonString);
|
||||
}
|
||||
|
||||
static getJson(key) async {
|
||||
var file = await getFile('$key.json');
|
||||
if (file != null && await file.exists()) {
|
||||
var jsonString = await file.readAsString();
|
||||
return json.decode(jsonString);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
static Future<JsonEncodable> getJsonEncodable<JsonEncodable>(key, JsonEncodable defaultValue, JsonEncodable Function(Map<String, dynamic>) fromJson) async {
|
||||
Map<String, dynamic>? jsonObject = await getJson(key);
|
||||
if (jsonObject != null) {
|
||||
return fromJson(jsonObject);
|
||||
} else {
|
||||
return defaultValue;
|
||||
}
|
||||
}
|
||||
|
||||
static Future<List<JsonEncodable>> getJsonEncodableList<JsonEncodable>(key, List<JsonEncodable> defaultValue, JsonEncodable Function(Map<String, dynamic>) fromJson) async {
|
||||
List<dynamic>? jsonObject = await getJson(key);
|
||||
if (jsonObject != null) {
|
||||
return jsonObject.map((e) => fromJson(e)).toList().cast<JsonEncodable>();
|
||||
} else {
|
||||
return defaultValue;
|
||||
}
|
||||
}
|
||||
|
||||
static Future<File?> getFile(String fileName, {bool create = false}) async{
|
||||
String path = (await getApplicationDocumentsDirectory()).path;
|
||||
var file = new File('$path/$fileName');
|
||||
if (!await file.exists()){
|
||||
if (!create) return null;
|
||||
await file.create();
|
||||
}
|
||||
return file;
|
||||
}
|
||||
}
|
||||
|
||||
mixin JsonEncodable {
|
||||
Map<String, dynamic> toJson();
|
||||
}
|
||||
Reference in New Issue
Block a user