mirror of
https://github.com/JGeek00/adguard-home-manager.git
synced 2025-04-20 22:09:11 +00:00
121 lines
No EOL
2.5 KiB
Dart
121 lines
No EOL
2.5 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:device_info_plus/device_info_plus.dart';
|
|
import 'package:flutter/scheduler.dart';
|
|
import 'package:package_info_plus/package_info_plus.dart';
|
|
import 'package:sqflite/sqlite_api.dart';
|
|
|
|
import 'package:adguard_home_manager/models/app_log.dart';
|
|
|
|
class AppConfigProvider with ChangeNotifier {
|
|
Database? _dbInstance;
|
|
|
|
PackageInfo? _appInfo;
|
|
AndroidDeviceInfo? _androidDeviceInfo;
|
|
IosDeviceInfo? _iosDeviceInfo;
|
|
|
|
int _selectedTheme = 0;
|
|
|
|
int _selectedClientsTab = 0;
|
|
|
|
final List<AppLog> _logs = [];
|
|
|
|
PackageInfo? get getAppInfo {
|
|
return _appInfo;
|
|
}
|
|
|
|
AndroidDeviceInfo? get androidDeviceInfo {
|
|
return _androidDeviceInfo;
|
|
}
|
|
|
|
IosDeviceInfo? get iosDeviceInfo {
|
|
return _iosDeviceInfo;
|
|
}
|
|
|
|
ThemeMode get selectedTheme {
|
|
switch (_selectedTheme) {
|
|
case 0:
|
|
return SchedulerBinding.instance.window.platformBrightness == Brightness.light
|
|
? ThemeMode.light
|
|
: ThemeMode.dark;
|
|
|
|
case 1:
|
|
return ThemeMode.light;
|
|
|
|
case 2:
|
|
return ThemeMode.dark;
|
|
|
|
default:
|
|
return ThemeMode.light;
|
|
}
|
|
}
|
|
|
|
int get selectedThemeNumber {
|
|
return _selectedTheme;
|
|
}
|
|
|
|
int get selectedClientsTab {
|
|
return _selectedClientsTab;
|
|
}
|
|
|
|
List<AppLog> get logs {
|
|
return _logs;
|
|
}
|
|
|
|
void setDbInstance(Database db) {
|
|
_dbInstance = db;
|
|
}
|
|
|
|
void setAppInfo(PackageInfo appInfo) {
|
|
_appInfo = appInfo;
|
|
}
|
|
|
|
void setAndroidInfo(AndroidDeviceInfo deviceInfo) {
|
|
_androidDeviceInfo = deviceInfo;
|
|
}
|
|
|
|
void setIosInfo(IosDeviceInfo deviceInfo) {
|
|
_iosDeviceInfo = deviceInfo;
|
|
}
|
|
|
|
void setSelectedClientsTab(int tab) {
|
|
_selectedClientsTab = tab;
|
|
notifyListeners();
|
|
}
|
|
|
|
void addLog(AppLog log) {
|
|
_logs.add(log);
|
|
notifyListeners();
|
|
}
|
|
|
|
Future<bool> setSelectedTheme(int value) async {
|
|
final updated = await _updateThemeDb(value);
|
|
if (updated == true) {
|
|
_selectedTheme = value;
|
|
notifyListeners();
|
|
return true;
|
|
}
|
|
else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
Future<bool> _updateThemeDb(int value) async {
|
|
try {
|
|
return await _dbInstance!.transaction((txn) async {
|
|
await txn.rawUpdate(
|
|
'UPDATE appConfig SET theme = $value',
|
|
);
|
|
return true;
|
|
});
|
|
} catch (e) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
void saveFromDb(Database dbInstance, Map<String, dynamic> dbData) {
|
|
_selectedTheme = dbData['theme'];
|
|
|
|
_dbInstance = dbInstance;
|
|
notifyListeners();
|
|
}
|
|
} |