Window class

A comprehensive windowing system for creating desktop-like window interfaces.

EXPERIMENTAL COMPONENT - This component is in active development and APIs may change.

Provides a complete window management solution with draggable, resizable windows that support minimizing, maximizing, and snapping to screen edges. Designed for desktop-style applications requiring multiple simultaneous content areas.

Core Features:

  • Window Management: Create, control, and destroy floating windows
  • Interactive Behaviors: Drag, resize, minimize, maximize, close operations
  • Snapping System: Intelligent edge snapping and window positioning
  • Layering Control: Always-on-top and z-order management
  • Constraint System: Size and position limits with validation
  • Theme Integration: Full shadcn_flutter theme and styling support

Architecture:

  • Window: Immutable window configuration and factory
  • WindowController: Reactive state management for window properties
  • WindowWidget: Stateful widget that renders the actual window
  • WindowNavigator: Container managing multiple windows

The system supports both controlled (external state management) and uncontrolled (internal state management) modes for different use cases.

Usage Patterns:

  1. Simple Window: Basic window with default behaviors
  2. Controlled Window: External state management with WindowController
  3. Window Navigator: Multiple windows with shared management

Example:

// Simple window
final window = Window(
  title: Text('My Window'),
  content: MyContent(),
  bounds: Rect.fromLTWH(100, 100, 800, 600),
  resizable: true,
  draggable: true,
);

// Controlled window
final controller = WindowController(initialState);
final controlledWindow = Window.controlled(
  controller: controller,
  title: Text('Controlled Window'),
  content: MyContent(),
);

Constructors

Window({Widget? title, Widget? actions = const WindowActions(), Widget? content, bool resizable = true, bool draggable = true, bool closable = true, bool maximizable = true, bool minimizable = true, bool enableSnapping = true, required Rect? bounds, Rect? maximized, bool minimized = false, bool alwaysOnTop = false, BoxConstraints constraints = kDefaultWindowConstraints})
Window.controlled({Widget? title, Widget? actions = const WindowActions(), Widget? content, required WindowController? controller})

Properties

actions → Widget?
final
alwaysOnTop → bool?
final
bounds → Rect?
final
closable → bool?
final
closed → ValueNotifier<bool>
final
constraints → BoxConstraints?
final
content → Widget?
final
controller → WindowController?
final
draggable → bool?
final
enableSnapping → bool?
final
handle → WindowHandle
no setter
hashCode → int
The hash code for this object.
no setterinherited
maximizable → bool?
final
maximized → Rect?
final
minimizable → bool?
final
minimized → bool?
final
mounted → bool
no setter
resizable → bool?
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
title → Widget?
final

Methods

noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() → String
A string representation of this object.
inherited

Operators

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