Flutter's Native Desktop Multi-Window API Lands on Master
Desktop-class Flutter apps can now manage multiple native windows without third-party plugins, using a unified widget tree that shares state across windows. This closes a long-standing gap for apps that need palettes, inspectors, or detached panels.
Flutter's long-awaited native multi-window support for desktop has reached a usable state on the master channel. The implementation defines five window types—regular, dialog, tooltip, popup, and satellite—each with its own controller and widget, all existing within a single widget tree that allows cross-window state sharing. Satellite windows can dock and undock from a parent, popups enforce on-screen visibility, and tooltips deliberately lack input focus.
Setting up requires switching to the master channel and enabling the windowing flag. Apps replace `runApp` with `runWidget`, and each window gets a `WindowController` that manages its title, size, and lifecycle. Event listening works through either a `WindowControllerDelegate` mixin or a `WindowScope` inherited widget. The API is functional on Windows and macOS, with Linux untested by the author.
Canonical's two-year stewardship of Flutter's desktop surface has produced a coherent windowing model that mirrors native platform expectations rather than bolting on a single-window workaround.
Placing all windows inside one widget tree is a deliberate architectural choice that sidesteps the complexity of inter-process or inter-isolate communication for state sharing.
The absence of Linux testing in this report is notable given Canonical's Ubuntu roots, suggesting the Linux implementation may lag behind macOS and Windows.