FocusScope class

Establishes a scope in which widgets can receive focus.

The focus tree keeps track of which widget is the user's current focus. The focused widget often listens for keyboard events.

The a focus scope does not itself receive focus but instead helps remember previous focus states. A scope is currently active when its node is the first focus of its parent scope. To activate a FocusScope, either use the autofocus property or explicitly make the node the first focus in the parent scope:


When a FocusScope is removed from the tree, the previously active FocusScope becomes active again.

See also:

  • FocusScopeNode, which is the associated node in the focus tree.
  • FocusNode, which is a leaf node in the focus tree that can receive focus.


FocusScope({Key key, @required FocusScopeNode node, bool autofocus: false, Widget child })
Creates a scope in which widgets can receive focus. [...]


autofocus bool
Whether this scope should attempt to become active when first added to the tree.
child Widget
The widget below this widget in the tree. [...]
node FocusScopeNode
Controls whether this scope is currently active.
hashCode int
The hash code for this object. [...]
read-only, inherited
key Key
Controls how one widget replaces another widget in the tree. [...]
final, inherited
runtimeType Type
A representation of the runtime type of the object.
read-only, inherited


createState() → _FocusScopeState
Creates the mutable state for this widget at a given location in the tree. [...]
createElement() StatefulElement
Creates a StatefulElement to manage this widget's location in the tree. [...]
debugDescribeChildren() List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children. [...]
@protected, inherited
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node. [...]
noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed. [...]
toDiagnosticsNode({String name, DiagnosticsTreeStyle style }) DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by toStringDeep. [...]
toString({DiagnosticLevel minLevel: DiagnosticLevel.debug }) String
Returns a string representation of this object.
toStringDeep({String prefixLineOne: '', String prefixOtherLines, DiagnosticLevel minLevel: DiagnosticLevel.debug }) String
Returns a string representation of this node and its descendants. [...]
toStringShallow({String joiner: ', ', DiagnosticLevel minLevel: DiagnosticLevel.debug }) String
Returns a one-line detailed description of the object. [...]
toStringShort() String
A short, textual description of this widget.


operator ==(dynamic other) bool
The equality operator. [...]

Static Methods

of(BuildContext context) FocusScopeNode
Returns the node of the FocusScope that most tightly encloses the given BuildContext.