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