WindowController class

Reactive controller for managing window state and operations.

Provides programmatic control over window properties with automatic UI updates through ValueNotifier pattern. Handles window state management, validation, and coordination with the window widget lifecycle.

Key Capabilities:

  • Reactive Updates: Automatic UI refresh when state changes
  • Property Management: Convenient getters/setters for window properties
  • Lifecycle Handling: Mount/unmount detection and validation
  • State Validation: Ensures state consistency and constraint compliance
  • Handle Management: Coordination with underlying window implementation

Usage Pattern:

  1. Create controller with initial window configuration
  2. Pass to Window.controlled() constructor
  3. Modify properties programmatically (bounds, minimized, etc.)
  4. UI automatically updates to reflect changes
  5. Listen to controller for state change notifications

Example:

final controller = WindowController(
  bounds: Rect.fromLTWH(100, 100, 800, 600),
  resizable: true,
  draggable: true,
);

// Programmatic control
controller.bounds = Rect.fromLTWH(200, 200, 900, 700);
controller.minimized = true;
controller.maximized = Rect.fromLTWH(0, 0, 1920, 1080);

// Listen for changes
controller.addListener(() {
  print('Window state changed: ${controller.value}');
});
Inheritance

Constructors

WindowController.new({required Rect bounds, Rect? maximized, bool minimized = false, bool focused = false, bool closable = true, bool resizable = true, bool draggable = true, bool maximizable = true, bool minimizable = true, bool enableSnapping = true, BoxConstraints constraints = kDefaultWindowConstraints})

Properties

alwaysOnTop bool
getter/setter pair
attachedState WindowHandle
no setter
bounds Rect
getter/setter pair
closable bool
getter/setter pair
constraints BoxConstraints
getter/setter pair
draggable bool
getter/setter pair
enableSnapping bool
getter/setter pair
hashCode int
The hash code for this object.
no setterinherited
hasListeners bool
Whether any listeners are currently registered.
no setterinherited
maximizable bool
getter/setter pair
maximized Rect?
getter/setter pair
minimizable bool
getter/setter pair
minimized bool
getter/setter pair
mounted bool
no setter
resizable bool
getter/setter pair
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
value WindowState
The current value stored in this notifier.
getter/setter pairinherited

Methods

addListener(VoidCallback listener) → void
Register a closure to be called when the object changes.
inherited
dispose() → void
Discards any resources used by the object. After this is called, the object is not in a usable state and should be discarded (calls to addListener will throw after the object is disposed).
inherited
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
toString() String
A string representation of this object.
inherited

Operators

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