headless property

bool? headless
final

Hold the plugins and draw nothing at all.

Not the same as overlayVisible: false, which only hides the button. That leaves the overlay's Stack, its dialog and toast layers and DevbarAppWrapper's Container/FittedBox in the tree. With the panel shut and no plugin contributing a button those paint the same pixels — measured, in test/devbar/headless_test.dart — but a screenshot is not the only thing the cockpit reads: every act reply carries the widget tree, and Target resolution walks it. An extra Stack, a FittedBox and an overlay Navigator between the root and the app change what nth counts and what a tap can land on. The moment the panel opens or a plugin adds a button, the pixels go too.

So under a run the chrome must not exist, rather than be invisible.

Defaults to whether flutterware is watching (GuestChannels.installed). Pass it explicitly to keep the overlay in a flutterware-launched app, or to drop it in one that is not.

Implementation

final bool? headless;