From 87eabf02939bf2e39413da0814d9b28a2f225d07 Mon Sep 17 00:00:00 2001 From: Hans Kokx Date: Tue, 29 Apr 2025 14:33:30 +0200 Subject: [PATCH] Made ArcaneTheme private (_ArcaneTheme) Signed-off-by: Hans Kokx --- example/lib/main.dart | 2 +- lib/arcane_framework.dart | 1 - .../services/reactive_theme/arcane_theme.dart | 26 -------------- .../reactive_theme_extensions.dart | 8 ----- .../reactive_theme_switcher.dart | 34 ++++++++++++++++++- 5 files changed, 34 insertions(+), 37 deletions(-) delete mode 100644 lib/src/services/reactive_theme/arcane_theme.dart diff --git a/example/lib/main.dart b/example/lib/main.dart index fba2056..64b97c1 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -235,7 +235,7 @@ class _HomeScreenState extends State { ), ), Text( - "The current theme mode is ${context.themeMode.name} and " + "The current theme mode is ${Arcane.theme.currentModeOf(context).name} and " "is ${Arcane.theme.isFollowingSystemTheme ? "" : "not "}" "following the system theme.", ), diff --git a/lib/arcane_framework.dart b/lib/arcane_framework.dart index 25b13a3..46a1ccb 100644 --- a/lib/arcane_framework.dart +++ b/lib/arcane_framework.dart @@ -44,7 +44,6 @@ export "package:arcane_framework/src/providers/service_provider.dart"; export "package:arcane_framework/src/services/authentication/authentication_service.dart"; export "package:arcane_framework/src/services/feature_flags/feature_flags_service.dart"; export "package:arcane_framework/src/services/logging/logging_service.dart"; -export "package:arcane_framework/src/services/reactive_theme/arcane_theme.dart"; export "package:arcane_framework/src/services/reactive_theme/reactive_theme_service.dart"; export "package:arcane_framework/src/services/reactive_theme/reactive_theme_switcher.dart"; export "package:result_monad/result_monad.dart"; diff --git a/lib/src/services/reactive_theme/arcane_theme.dart b/lib/src/services/reactive_theme/arcane_theme.dart deleted file mode 100644 index d91ea3d..0000000 --- a/lib/src/services/reactive_theme/arcane_theme.dart +++ /dev/null @@ -1,26 +0,0 @@ -import "package:flutter/material.dart"; - -class ArcaneTheme extends InheritedWidget { - final ThemeMode themeMode; - final bool followSystem; - final ThemeData? theme; - - const ArcaneTheme({ - required super.child, - this.themeMode = ThemeMode.light, - this.followSystem = false, - this.theme, - super.key, - }); - - static ArcaneTheme? of(BuildContext context) { - return context.dependOnInheritedWidgetOfExactType(); - } - - @override - bool updateShouldNotify(ArcaneTheme oldWidget) { - return themeMode != oldWidget.themeMode || - followSystem != oldWidget.followSystem || - theme != oldWidget.theme; - } -} diff --git a/lib/src/services/reactive_theme/reactive_theme_extensions.dart b/lib/src/services/reactive_theme/reactive_theme_extensions.dart index 9ad45a2..edb18f6 100644 --- a/lib/src/services/reactive_theme/reactive_theme_extensions.dart +++ b/lib/src/services/reactive_theme/reactive_theme_extensions.dart @@ -19,11 +19,3 @@ extension DarkMode on BuildContext { return brightness == Brightness.dark; } } - -extension ArcaneThemeContext on BuildContext { - /// Get the current theme mode from the nearest ArcaneThemeInherited widget - ThemeMode get themeMode { - return ArcaneTheme.of(this)?.themeMode ?? - ArcaneReactiveTheme.I.currentThemeMode; - } -} diff --git a/lib/src/services/reactive_theme/reactive_theme_switcher.dart b/lib/src/services/reactive_theme/reactive_theme_switcher.dart index 99689f4..568c391 100644 --- a/lib/src/services/reactive_theme/reactive_theme_switcher.dart +++ b/lib/src/services/reactive_theme/reactive_theme_switcher.dart @@ -45,7 +45,7 @@ class _ArcaneThemeSwitcherState extends State @override Widget build(BuildContext context) { - return ArcaneTheme( + return _ArcaneTheme( themeMode: ArcaneReactiveTheme.I.currentThemeMode, followSystem: ArcaneReactiveTheme.I.isFollowingSystemTheme, theme: ArcaneReactiveTheme.I.currentTheme, @@ -68,3 +68,35 @@ class _ArcaneThemeSwitcherState extends State super.didChangePlatformBrightness(); } } + +class _ArcaneTheme extends InheritedWidget { + final ThemeMode themeMode; + final bool followSystem; + final ThemeData? theme; + + const _ArcaneTheme({ + required super.child, + this.themeMode = ThemeMode.light, + this.followSystem = false, + this.theme, + }); + + static _ArcaneTheme? of(BuildContext context) { + return context.dependOnInheritedWidgetOfExactType<_ArcaneTheme>(); + } + + @override + bool updateShouldNotify(_ArcaneTheme oldWidget) { + return themeMode != oldWidget.themeMode || + followSystem != oldWidget.followSystem || + theme != oldWidget.theme; + } +} + +extension ArcaneThemeContext on BuildContext { + /// Get the current theme mode from the nearest ArcaneThemeInherited widget + ThemeMode get themeMode { + return _ArcaneTheme.of(this)?.themeMode ?? + ArcaneReactiveTheme.I.currentThemeMode; + } +}