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
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