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:
- Create controller with initial window configuration
- Pass to Window.controlled() constructor
- Modify properties programmatically (bounds, minimized, etc.)
- UI automatically updates to reflect changes
- 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
-
- Object
- ChangeNotifier
- ValueNotifier<
WindowState> - WindowController
Constructors
- WindowController({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})
- Creates a WindowController.
Properties
- alwaysOnTop ↔ bool
-
Whether the window always appears on top of other windows.
getter/setter pair
- attachedState → WindowHandle
-
The window handle this controller is attached to.
no setter
- bounds ↔ Rect
-
Current position and size of the window.
getter/setter pair
- closable ↔ bool
-
Whether the window can be closed.
getter/setter pair
- constraints ↔ BoxConstraints
-
Size constraints for the window.
getter/setter pair
- draggable ↔ bool
-
Whether the window can be moved by dragging the title bar.
getter/setter pair
- enableSnapping ↔ bool
-
Whether edge snapping is enabled for the window.
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
-
Whether the window can be maximized.
getter/setter pair
- maximized ↔ Rect?
-
Maximized bounds, or
nullif the window is not maximized.getter/setter pair - minimizable ↔ bool
-
Whether the window can be minimized.
getter/setter pair
- minimized ↔ bool
-
Whether the window is currently minimized.
getter/setter pair
- mounted → bool
-
Whether the controller is currently attached to a window widget.
no setter
- resizable ↔ bool
-
Whether the window can be resized by dragging edges/corners.
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