ThemeService class
Ultra-optimized, zero-dependency, production-ready global theme service.
Features:
• True singleton with global access via ThemeService.instance
• Context-free system brightness detection
• Cached ThemeData & CupertinoThemeData (built once)
• Minimal rebuilds using ValueNotifier
• Full Material 3 + Cupertino support
• Works with or without any state management
Call once in main():
void main() {
ThemeService.instance.startListening();
runApp(MyApp());
}
- Inheritance
-
- Object
- ChangeNotifier
- ThemeService
- Mixed-in types
Constructors
- ThemeService()
-
factory
Properties
- currentSystemBrightness → Brightness
-
Get current system brightness
no setter
- currentThemeMode → ThemeMode
-
Get current theme mode
no setter
- effectiveBrightness → Brightness
-
Get the effective brightness based on current theme mode
If theme mode is system, returns current system brightness
Otherwise returns the brightness corresponding to the selected theme mode
no setter
- hashCode → int
-
The hash code for this object.
no setteroverride
- hasListeners → bool
-
Whether any listeners are currently registered.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
-
systemBrightnessNotifier
→ ValueNotifier<
Brightness> -
Get the system brightness ValueNotifier for reactive updates
no setter
-
themeModeNotifier
→ ValueNotifier<
ThemeMode> -
Get the theme mode ValueNotifier for reactive updates
no setter
Methods
-
addListener(
VoidCallback listener) → void -
Register a closure to be called when the object changes.
inherited
-
didChangeAccessibilityFeatures(
) → void -
Called when the system changes the set of currently active accessibility
features.
inherited
-
didChangeAppLifecycleState(
AppLifecycleState state) → void -
Called when the system puts the app in the background or returns
the app to the foreground.
inherited
-
didChangeLocales(
List< Locale> ? locales) → void -
Called when the system tells the app that the user's locale has
changed. For example, if the user changes the system language
settings.
inherited
-
didChangeMetrics(
) → void -
Called when the application's dimensions change. For example,
when a phone is rotated.
inherited
-
didChangePlatformBrightness(
) → void -
Called when the platform brightness changes.
override
-
didChangeTextScaleFactor(
) → void -
Called when the platform's text scale factor changes.
inherited
-
didChangeViewFocus(
ViewFocusEvent event) → void -
Called whenever the PlatformDispatcher receives a notification that the
focus state on a view has changed.
inherited
-
didHaveMemoryPressure(
) → void -
Called when the system is running low on memory.
inherited
-
didPopRoute(
) → Future< bool> -
Called when the system tells the app to pop the current route, such as
after a system back button press or back gesture.
inherited
-
didPushRoute(
String route) → Future< bool> -
Called when the host tells the application to push a new route onto the
navigator.
inherited
-
didPushRouteInformation(
RouteInformation routeInformation) → Future< bool> -
Called when the host tells the application to push a new
RouteInformation and a restoration state onto the router.
inherited
-
didRequestAppExit(
) → Future< AppExitResponse> -
Called when a request is received from the system to exit the application.
inherited
-
dispose(
) → void -
Dispose of the theme service and clean up resources
override
-
getCupertinoTheme(
Brightness brightness) → CupertinoThemeData - Get Cupertino theme data for a specific brightness
-
getMaterialTheme(
Brightness brightness) → ThemeData - Get Material theme data for a specific brightness
-
handleCancelBackGesture(
) → void -
Called when a predictive back gesture is canceled, indicating that no
navigation should occur.
inherited
-
handleCommitBackGesture(
) → void -
Called when a predictive back gesture is finished successfully, indicating
that the current route should be popped.
inherited
-
handleStartBackGesture(
PredictiveBackEvent backEvent) → bool -
Called at the start of a predictive back gesture.
inherited
-
handleUpdateBackGestureProgress(
PredictiveBackEvent backEvent) → void -
Called when a predictive back gesture moves.
inherited
-
listenToSystemTheme(
BuildContext context) → void -
Legacy method kept for backward compatibility
Prefer
startListening()now -
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
notifyListeners(
) → void -
Call all the registered listeners.
inherited
-
removeListener(
VoidCallback listener) → void -
Remove a previously registered closure from the list of closures that are
notified when the object changes.
inherited
-
setThemeMode(
ThemeMode themeMode) → void - Set the theme mode (light, dark, or system) This method updates the theme mode and notifies all listeners
-
startListening(
) → void - Start listening to system brightness changes (context-free!) Call once in main() — no BuildContext needed
-
toString(
) → String -
A string representation of this object.
override
Operators
-
operator ==(
Object other) → bool -
The equality operator.
override
Static Properties
- instance → ThemeService
-
Global access point (recommended)
no setter