Unverified Commit d2c47acd authored by Justin McCandless's avatar Justin McCandless Committed by GitHub

GlobalKey docs improvement (#66834)

Improve GlobalKey docs by mentioning a pitfall that some users had where the instantiated it in the build method.
parent 6f20c8a8
...@@ -116,6 +116,20 @@ class ObjectKey extends LocalKey { ...@@ -116,6 +116,20 @@ class ObjectKey extends LocalKey {
/// You cannot simultaneously include two widgets in the tree with the same /// You cannot simultaneously include two widgets in the tree with the same
/// global key. Attempting to do so will assert at runtime. /// global key. Attempting to do so will assert at runtime.
/// ///
/// ## Pitfalls
/// GlobalKeys should not be re-created on every build. They should usually be
/// long-lived objects owned by a [State] object, for example.
///
/// Creating a new GlobalKey on every build will throw away the state of the
/// subtree associated with the old key and create a new fresh subtree for the
/// new key. Besides harming performance, this can also cause unexpected
/// behavior in widgets in the subtree. For example, a [GestureDetector] in the
/// subtree will be unable to track ongoing gestures since it will be recreated
/// on each build.
///
/// Instead, a good practice is to let a State object own the GlobalKey, and
/// instantiate it outside the build method, such as in [State.initState].
///
/// See also: /// See also:
/// ///
/// * The discussion at [Widget.key] for more information about how widgets use /// * The discussion at [Widget.key] for more information about how widgets use
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment