The widget and element trees are sometimes described as
reactive, because new inputs provided in a widget’s
constructor are immediately propagated as changes to
lower-level widgets by the widget’s build method, and
changes made in the lower widgets (for example,
in response to user input) propagate back up the tree
via event handlers. Aspects of both functional-reactive and
imperative-reactive are present in the framework,
depending on the needs of the widgets. Widgets with build
methods that consist of just an expression describing how
the widget reacts to changes in its configuration are functional
reactive widgets (for example, the Material Divider class).
Widgets whose build methods construct a list of children
over several statements, describing how the widget reacts
to changes in its configuration, are imperative reactive
widgets (for example, the Chip class).