49 lines
1.4 KiB
Dart
49 lines
1.4 KiB
Dart
// Flutter imports:
|
||
import 'package:flutter/material.dart' show ThemeMode;
|
||
import 'package:remever/common/resources.dart';
|
||
import 'package:remever/common/storage.dart';
|
||
import 'package:remever/components/extensions/theme_mode.dart';
|
||
import 'package:remever/interfaces/warmup_service.dart';
|
||
|
||
import 'core_service.dart';
|
||
|
||
///
|
||
/// Сервис для работы с темой приложения
|
||
///
|
||
class ThemeService extends CoreService implements IWarmupService {
|
||
@override
|
||
Future<void> init() async {
|
||
final ThemeMode? theme = hiveTheme.get(StorageKeys.themeKey);
|
||
|
||
if (theme == null) {
|
||
await hiveTheme.put(StorageKeys.themeKey, ThemeMode.light);
|
||
}
|
||
}
|
||
|
||
///
|
||
/// Получение текущего значения для темы
|
||
///
|
||
/// По-умолчанию - светлый
|
||
///
|
||
ThemeMode get themeMode {
|
||
return hiveTheme.get(StorageKeys.themeKey, defaultValue: ThemeMode.light)!;
|
||
}
|
||
|
||
///
|
||
/// Обновление темы приложения
|
||
///
|
||
/// [oldThemeMode] должно быть текущее значение темы. Автоматически будет
|
||
/// вызван метод {inversed}
|
||
///
|
||
Future<void> update(ThemeMode oldThemeMode) async {
|
||
return updateInversed(oldThemeMode.inversed);
|
||
}
|
||
|
||
///
|
||
/// Обновление темы приложения
|
||
///
|
||
Future<void> updateInversed(ThemeMode themeMode) async {
|
||
return hiveTheme.put(StorageKeys.themeKey, themeMode);
|
||
}
|
||
}
|