Add windows storage corruption detection
Fix core crash caused by windows resource manager restart Optimize logs, requests, access to pages Fix macos bypass domain issues
This commit is contained in:
@@ -1,19 +1,21 @@
|
||||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:fl_clash/models/models.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
import '../models/models.dart';
|
||||
|
||||
import 'constant.dart';
|
||||
|
||||
class Preferences {
|
||||
static Preferences? _instance;
|
||||
Completer<SharedPreferences> sharedPreferencesCompleter = Completer();
|
||||
Completer<SharedPreferences?> sharedPreferencesCompleter = Completer();
|
||||
|
||||
Future<bool> get isInit async => await sharedPreferencesCompleter.future != null;
|
||||
|
||||
Preferences._internal() {
|
||||
SharedPreferences.getInstance()
|
||||
.then((value) => sharedPreferencesCompleter.complete(value));
|
||||
SharedPreferences.getInstance().then((value) => sharedPreferencesCompleter.complete(value))
|
||||
.onError((_,__)=>sharedPreferencesCompleter.complete(null));
|
||||
}
|
||||
|
||||
factory Preferences() {
|
||||
@@ -21,52 +23,44 @@ class Preferences {
|
||||
return _instance!;
|
||||
}
|
||||
|
||||
|
||||
Future<ClashConfig?> getClashConfig() async {
|
||||
final preferences = await sharedPreferencesCompleter.future;
|
||||
final clashConfigString = preferences.getString(clashConfigKey);
|
||||
final clashConfigString = preferences?.getString(clashConfigKey);
|
||||
if (clashConfigString == null) return null;
|
||||
final clashConfigMap = json.decode(clashConfigString);
|
||||
try {
|
||||
return ClashConfig.fromJson(clashConfigMap);
|
||||
} catch (e) {
|
||||
debugPrint(e.toString());
|
||||
return null;
|
||||
}
|
||||
return ClashConfig.fromJson(clashConfigMap);
|
||||
}
|
||||
|
||||
Future<bool> saveClashConfig(ClashConfig clashConfig) async {
|
||||
final preferences = await sharedPreferencesCompleter.future;
|
||||
return preferences.setString(
|
||||
preferences?.setString(
|
||||
clashConfigKey,
|
||||
json.encode(clashConfig),
|
||||
);
|
||||
return true;
|
||||
}
|
||||
|
||||
Future<Config?> getConfig() async {
|
||||
final preferences = await sharedPreferencesCompleter.future;
|
||||
final configString = preferences.getString(configKey);
|
||||
final configString = preferences?.getString(configKey);
|
||||
if (configString == null) return null;
|
||||
final configMap = json.decode(configString);
|
||||
try {
|
||||
return Config.fromJson(configMap);
|
||||
} catch (e) {
|
||||
debugPrint(e.toString());
|
||||
return null;
|
||||
}
|
||||
return Config.fromJson(configMap);
|
||||
}
|
||||
|
||||
Future<bool> saveConfig(Config config) async {
|
||||
final preferences = await sharedPreferencesCompleter.future;
|
||||
return preferences.setString(
|
||||
return await preferences?.setString(
|
||||
configKey,
|
||||
json.encode(config),
|
||||
);
|
||||
) ?? false;
|
||||
}
|
||||
|
||||
clearPreferences() async {
|
||||
final sharedPreferencesIns = await sharedPreferencesCompleter.future;
|
||||
sharedPreferencesIns.clear();
|
||||
sharedPreferencesIns?.clear();
|
||||
}
|
||||
}
|
||||
|
||||
final preferences = Preferences();
|
||||
final preferences = Preferences();
|
||||
|
||||
Reference in New Issue
Block a user