key property
Controls how one widget replaces another widget in the tree.
If the runtimeType
and key
properties of the two widgets are
operator==
, respectively, then the new widget replaces the old widget by
updating the underlying element (i.e., by calling Element.update
with the
new widget). Otherwise, the old element is removed from the tree, the new
widget is inflated into an element, and the new element is inserted into the
tree.
In addition, using a GlobalKey
as the widget's key
allows the element
to be moved around the tree (changing parent) without losing state. When a
new widget is found (its key and type do not match a previous widget in
the same location), but there was a widget with that same global key
elsewhere in the tree in the previous frame, then that widget's element is
moved to the new location.
Generally, a widget that is the only child of another widget does not need an explicit key.
See also the discussions at Key
and GlobalKey
.
Implementation
final Key key