Widget tree

To dump the state of the Widgets library, call debugDumpApp().
You can call this more or less any time that the application is not in
the middle of running a build phase (in other words, not anywhere inside a
build() method), if the app has built at least once and is in debug mode
(in other words, any time after calling runApp()).

For example, the following application:

The previous app outputs something like the following
(the precise details vary by the version of the framework,
the size of the device, and so forth):

This is the “flattened” tree, showing all the widgets projected
through their various build functions. (This is the tree you obtain if
you call toStringDeep() on the root of the widget tree.)
You’ll see a lot of widgets in there that don’t appear in your
application’s source, because they are inserted by the framework’s
widgets’ build functions. For example,
InkFeature is an implementation detail of the Material widget.