ArcaneAppState class

The state class for ArcaneApp, managing app-level state including theme and navigation.

This class handles initialization, theme updates, and the build process for the app's root widget tree. It provides global access via Arcane.$app and ensures efficient rebuilds by caching the ArcaneTheme and using Pylon for provider-like theme distribution. Integrates with ShadcnApp for rendering, applying theme extensions to ThemeData and handling both standard Navigator and Router modes. Emphasizes performance through minimal state changes and lazy route factories, making it the core for scalable Arcane UIs with components like BottomNavigationBar and Sidebar.

Key features:

  • Theme management with setTheme for dynamic updates without full restarts.
  • Route factory caching to avoid regeneration on rebuilds.
  • Integration with global services (Serviced) and events (ArcaneShadEvents).
  • Announcement logging for key lifecycle events, aiding debugging.

Usage: Automatically created by ArcaneApp; access via Arcane.$app for theme or update calls. It propagates ArcaneTheme to descendants, ensuring consistent styling and scroll behavior.

Parameters: Inherited from ArcaneApp; manages internal _theme and routeFactory.

Returns: Widgets via build, including ShadcnApp wrapped with theme provider.

Integrations: Uses Pylon<ArcaneTheme> for context provision, PopoverOverlayHandler for overlays, and BouncingScrollPhysics defaults for smooth interactions. Optimizes for low overhead by inlining simple getters and avoiding unnecessary async in non-await methods.

Inheritance

Constructors

ArcaneAppState.new()

Properties

$rawThemeInject ArcaneTheme
no getter
context BuildContext
The location in the tree where this widget builds.
no setterinherited
currentTheme ArcaneTheme
The current theme of the application.
no setter
hashCode int
The hash code for this object.
no setterinherited
mounted bool
Whether this State object is currently in a tree.
no setterinherited
routeFactory RouteFactory?
getter/setter pair
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
usesRouter bool
Whether the app uses the Router API for navigation.
no setter
widget ArcaneApp
The current configuration.
no setterinherited

Methods

activate() → void
Called when this object is reinserted into the tree after having been removed via deactivate.
inherited
build(BuildContext context) Widget
Builds the app's root widget tree, applying theme and navigation.
override
deactivate() → void
Called when this object is removed from the tree.
inherited
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node.
inherited
didChangeDependencies() → void
Called when a dependency of this State object changes.
inherited
didUpdateWidget(covariant ArcaneApp oldWidget) → void
Responds to widget updates, refreshing theme if changed.
override
dispose() → void
Called when this object is removed from the tree permanently.
inherited
initState() → void
Initializes the app state, setting up global references and theme.
override
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
reassemble() → void
Called whenever the application is reassembled during debugging, for example during hot reload.
inherited
setState(VoidCallback fn) → void
Notify the framework that the internal state of this object has changed.
inherited
setTheme(ArcaneTheme theme) → void
Updates the app's theme dynamically, triggering a targeted rebuild.
toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep.
inherited
toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) String
A string representation of this object.
inherited
toStringShort() String
A brief description of this object, usually just the runtimeType and the hashCode.
inherited
updateApp() → void
Forces a full app rebuild without state changes, refreshing the UI.

Operators

operator ==(Object other) bool
The equality operator.
inherited