chore(legacy-theme): remove reserved timeframe dead code

This commit is contained in:
2026-04-22 00:56:47 +02:00
parent 2eee3489cd
commit c4d328d92c
7 changed files with 18 additions and 145 deletions

View File

@@ -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;
}

View File

@@ -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)
// }
// ============================================================================

View File

@@ -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);
}

View File

@@ -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;
// }
// }
}

View File

@@ -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
// );
}

View File

@@ -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);
}

View File

@@ -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});