chore(legacy-theme): remove reserved timeframe dead code
This commit is contained in:
@@ -1,24 +1,6 @@
|
||||
/// Identifies the concrete theme variant currently applied.
|
||||
///
|
||||
/// Today there are only two variants (`light` and `dark`). The `light1/2/3`
|
||||
/// values are reserved for the future timeframe-based dynamic light theming
|
||||
/// (see `timeframe_enum.dart`). To activate it:
|
||||
/// 1. Uncomment the three `light1/2/3` entries below.
|
||||
/// 2. Uncomment the matching `ThemeData` definitions in `legacy_app_theme.dart`.
|
||||
/// 3. Uncomment the `TimeframeEnum` and `getThemeFromTimeframe()` helpers.
|
||||
/// 4. Subscribe `LegacyThemeNotifier` to a timeframe stream.
|
||||
enum LegacyThemeEnum {
|
||||
light,
|
||||
// light1, // morning variant (reserved)
|
||||
// light2, // afternoon variant (reserved)
|
||||
// light3, // evening/night variant (reserved)
|
||||
dark;
|
||||
|
||||
bool get isLight {
|
||||
return this == LegacyThemeEnum.light;
|
||||
// return this == LegacyThemeEnum.light ||
|
||||
// this == LegacyThemeEnum.light1 ||
|
||||
// this == LegacyThemeEnum.light2 ||
|
||||
// this == LegacyThemeEnum.light3;
|
||||
}
|
||||
bool get isLight => this == LegacyThemeEnum.light;
|
||||
}
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
// ============================================================================
|
||||
// TIMEFRAME-BASED DYNAMIC THEMING (RESERVED — currently disabled)
|
||||
// ============================================================================
|
||||
//
|
||||
// Inspired by onelife_app, this enum lets the light theme morph across
|
||||
// variants according to the user's local time of day.
|
||||
//
|
||||
// To enable:
|
||||
// 1. Uncomment the enum below.
|
||||
// 2. Uncomment the `light1/2/3` entries in `legacy_theme_enum.dart`.
|
||||
// 3. Uncomment the matching `ThemeData` definitions in `legacy_app_theme.dart`.
|
||||
// 4. Uncomment `getThemeFromTimeframe()` in `theme_utils.dart`.
|
||||
// 5. In `LegacyThemeNotifier`, wire a subscription to a timeframe stream/event
|
||||
// and call `_setThemeFromTimeframe(currentTimeframe)` on each change.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// enum TimeframeEnum {
|
||||
// morning, // 06:00-12:00 → light1
|
||||
// afternoon, // 12:00-18:00 → light2
|
||||
// evening, // 18:00-22:00 → light3
|
||||
// night, // 22:00-06:00 → light3 (reuse evening or define light4)
|
||||
// }
|
||||
// ============================================================================
|
||||
@@ -1,8 +1,6 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
/// Lightweight wrapper around [SharedPreferences] for persisting the user's
|
||||
/// selected [ThemeMode] across sessions.
|
||||
class LegacyThemePreferences {
|
||||
LegacyThemePreferences(this._prefs);
|
||||
|
||||
@@ -10,10 +8,8 @@ class LegacyThemePreferences {
|
||||
|
||||
static const _kThemeModeKey = 'legacy_theme_mode';
|
||||
|
||||
/// Returns the persisted mode, or `null` if none has been stored yet.
|
||||
ThemeMode? readThemeMode() {
|
||||
final raw = _prefs.getString(_kThemeModeKey);
|
||||
if (raw == null) return null;
|
||||
switch (raw) {
|
||||
case 'light':
|
||||
return ThemeMode.light;
|
||||
@@ -26,11 +22,9 @@ class LegacyThemePreferences {
|
||||
}
|
||||
}
|
||||
|
||||
/// Persists the given mode.
|
||||
Future<void> writeThemeMode(ThemeMode mode) {
|
||||
return _prefs.setString(_kThemeModeKey, mode.name);
|
||||
}
|
||||
|
||||
/// Clears any persisted preference (next read returns `null`).
|
||||
Future<void> clear() => _prefs.remove(_kThemeModeKey);
|
||||
}
|
||||
|
||||
@@ -1,49 +1,22 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'enums/legacy_theme_enum.dart';
|
||||
// import 'enums/timeframe_enum.dart'; // reserved — see file
|
||||
|
||||
/// Utilities for mapping between [ThemeMode], [Brightness], and
|
||||
/// [LegacyThemeEnum].
|
||||
class LegacyThemeUtils {
|
||||
const LegacyThemeUtils._();
|
||||
|
||||
/// Maps the system brightness to a [ThemeMode] (helper for `ThemeMode.system`).
|
||||
static ThemeMode brightnessToThemeMode(Brightness brightness) {
|
||||
return brightness == Brightness.light ? ThemeMode.light : ThemeMode.dark;
|
||||
}
|
||||
|
||||
/// Resolves the concrete [LegacyThemeEnum] variant for a given mode.
|
||||
///
|
||||
/// When the timeframe feature is active, `timeframe` is honored to pick
|
||||
/// `light1/2/3`. For now only `light` and `dark` are returned.
|
||||
static LegacyThemeEnum resolveTheme(ThemeMode mode, Brightness platformBrightness) {
|
||||
static LegacyThemeEnum resolveTheme(
|
||||
ThemeMode mode,
|
||||
Brightness platformBrightness,
|
||||
) {
|
||||
final effective = mode == ThemeMode.system
|
||||
? brightnessToThemeMode(platformBrightness)
|
||||
: mode;
|
||||
return effective == ThemeMode.dark ? LegacyThemeEnum.dark : LegacyThemeEnum.light;
|
||||
return effective == ThemeMode.dark
|
||||
? LegacyThemeEnum.dark
|
||||
: LegacyThemeEnum.light;
|
||||
}
|
||||
|
||||
// ==========================================================================
|
||||
// TIMEFRAME MAPPING (RESERVED — see timeframe_enum.dart)
|
||||
// ==========================================================================
|
||||
// static LegacyThemeEnum getThemeFromTimeframe(
|
||||
// TimeframeEnum timeframe,
|
||||
// ThemeMode mode,
|
||||
// ) {
|
||||
// final effectiveMode = mode == ThemeMode.system
|
||||
// ? brightnessToThemeMode(
|
||||
// SchedulerBinding.instance.platformDispatcher.platformBrightness,
|
||||
// )
|
||||
// : mode;
|
||||
// if (effectiveMode == ThemeMode.dark) return LegacyThemeEnum.dark;
|
||||
// switch (timeframe) {
|
||||
// case TimeframeEnum.morning:
|
||||
// return LegacyThemeEnum.light1;
|
||||
// case TimeframeEnum.afternoon:
|
||||
// return LegacyThemeEnum.light2;
|
||||
// case TimeframeEnum.evening:
|
||||
// case TimeframeEnum.night:
|
||||
// return LegacyThemeEnum.light3;
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
@@ -2,11 +2,6 @@ import 'package:flutter/material.dart';
|
||||
import '../extensions/sf_colors.dart';
|
||||
import 'legacy_color_schemes.dart';
|
||||
|
||||
/// Material 3 [ThemeData]s for legacy app mode.
|
||||
///
|
||||
/// [SfColors] (custom brand tokens) are registered as a [ThemeExtension],
|
||||
/// accessible via `Theme.of(context).extension<SfColors>()` or
|
||||
/// `context.sfColors`.
|
||||
class LegacyAppTheme {
|
||||
const LegacyAppTheme._();
|
||||
|
||||
@@ -14,30 +9,13 @@ class LegacyAppTheme {
|
||||
useMaterial3: true,
|
||||
colorScheme: LegacyColorSchemes.light,
|
||||
fontFamily: 'Stolzl',
|
||||
extensions: const <ThemeExtension<dynamic>>[
|
||||
SfColors.light,
|
||||
],
|
||||
extensions: const <ThemeExtension<dynamic>>[SfColors.light],
|
||||
);
|
||||
|
||||
static ThemeData get dark => ThemeData(
|
||||
useMaterial3: true,
|
||||
colorScheme: LegacyColorSchemes.dark,
|
||||
fontFamily: 'Stolzl',
|
||||
extensions: const <ThemeExtension<dynamic>>[
|
||||
SfColors.dark,
|
||||
],
|
||||
extensions: const <ThemeExtension<dynamic>>[SfColors.dark],
|
||||
);
|
||||
|
||||
// ==========================================================================
|
||||
// TIMEFRAME-BASED LIGHT VARIANTS (RESERVED — see timeframe_enum.dart)
|
||||
// ==========================================================================
|
||||
// static ThemeData get light1 => light.copyWith(
|
||||
// colorScheme: LegacyColorSchemes.light, // TODO: variant for morning
|
||||
// );
|
||||
// static ThemeData get light2 => light.copyWith(
|
||||
// colorScheme: LegacyColorSchemes.light, // TODO: variant for afternoon
|
||||
// );
|
||||
// static ThemeData get light3 => light.copyWith(
|
||||
// colorScheme: LegacyColorSchemes.light, // TODO: variant for evening/night
|
||||
// );
|
||||
}
|
||||
|
||||
@@ -3,17 +3,12 @@ import 'dart:ui';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
import '../../data/enums/legacy_theme_enum.dart';
|
||||
// import '../../data/enums/timeframe_enum.dart'; // reserved — see file
|
||||
import '../../data/preferences/legacy_theme_preferences.dart';
|
||||
import '../../data/theme_utils.dart';
|
||||
import '../providers/legacy_theme_providers.dart';
|
||||
import 'legacy_theme_state.dart';
|
||||
|
||||
/// [LegacyThemeEnum] currently applied.
|
||||
class LegacyThemeNotifier extends Notifier<LegacyThemeState> {
|
||||
// StreamSubscription<TimeframeEnum>? _timeframeSub;
|
||||
|
||||
LegacyThemePreferences get _preferences =>
|
||||
ref.read(legacyThemePreferencesProvider);
|
||||
|
||||
@@ -38,20 +33,6 @@ class LegacyThemeNotifier extends Notifier<LegacyThemeState> {
|
||||
}
|
||||
};
|
||||
|
||||
// ========================================================================
|
||||
// TIMEFRAME SUBSCRIPTION (RESERVED)
|
||||
// ========================================================================
|
||||
// _timeframeSub = timeframeStream.listen((timeframe) {
|
||||
// final variant = LegacyThemeUtils.getThemeFromTimeframe(
|
||||
// timeframe,
|
||||
// state.themeMode,
|
||||
// );
|
||||
// if (variant != state.currentTheme) {
|
||||
// state = state.copyWith(currentTheme: variant);
|
||||
// }
|
||||
// });
|
||||
// ref.onDispose(() => _timeframeSub?.cancel());
|
||||
|
||||
return LegacyThemeState(themeMode: initialMode, currentTheme: currentTheme);
|
||||
}
|
||||
|
||||
@@ -65,9 +46,6 @@ class LegacyThemeNotifier extends Notifier<LegacyThemeState> {
|
||||
await _preferences.writeThemeMode(mode);
|
||||
}
|
||||
|
||||
/// Stages a temporary selection without applying it.
|
||||
/// Useful for confirmation popups: call [commitTempSelection] to apply,
|
||||
/// or [clearTempSelection] to discard.
|
||||
void stageTempSelection(ThemeMode mode) {
|
||||
state = state.copyWith(tempSelectionMode: mode);
|
||||
}
|
||||
|
||||
@@ -3,15 +3,6 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
import '../providers/legacy_theme_providers.dart';
|
||||
|
||||
/// Horizontal 3-option selector for light / dark / system theme modes.
|
||||
///
|
||||
/// Applies the choice immediately on tap (via `setThemeMode`), so the
|
||||
/// enclosing screen sees the theme change without any extra wiring.
|
||||
///
|
||||
/// Drop into any settings screen:
|
||||
/// ```dart
|
||||
/// const LegacyThemeSelector()
|
||||
/// ```
|
||||
class LegacyThemeSelector extends ConsumerWidget {
|
||||
const LegacyThemeSelector({super.key});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user