first commit
This commit is contained in:
48
lib/services/core/theme_service.dart
Normal file
48
lib/services/core/theme_service.dart
Normal file
@@ -0,0 +1,48 @@
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user