DirectionalFocusTraversalPolicyMixin mixin Null safety

A mixin class that provides an implementation for finding a node in a particular direction.

This can be mixed in to other FocusTraversalPolicy implementations that only want to implement new next/previous policies.

Since hysteresis in the navigation order is undesirable, this implementation maintains a stack of previous locations that have been visited on the policy data for the affected FocusScopeNode. If the previous direction was the opposite of the current direction, then the this policy will request focus on the previously focused node. Change to another direction other than the current one or its opposite will clear the stack.

For instance, if the focus moves down, down, down, and then up, up, up, it will follow the same path through the widgets in both directions. However, if it moves down, down, down, left, right, and then up, up, up, it may not follow the same path on the way up as it did on the way down, since changing the axis of motion resets the history.

See also:

Superclass Constraints
Mixin Applications

Properties

hashCode int
The hash code for this object.
read-onlyinherited
runtimeType Type
A representation of the runtime type of the object.
read-onlyinherited

Methods

changedScope({FocusNode? node, FocusScopeNode? oldScope}) → void
This is called whenever the given node is re-parented into a new scope, so that the policy has a chance to update or invalidate any cached data that it maintains per scope about the node.
override
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node.
mustCallSuper">@mustCallSuperprotected">@protectedinherited
findFirstFocus(FocusNode currentNode) FocusNode?
Returns the node that should receive focus if focus is traversing forwards, and there is no current focus.
inherited
findFirstFocusInDirection(FocusNode currentNode, TraversalDirection direction) FocusNode?
Returns the first node in the given direction that should receive focus if there is no current focus in the scope to which the currentNode belongs.
override
findLastFocus(FocusNode currentNode) FocusNode
Returns the node that should receive focus if focus is traversing backwards, and there is no current focus.
inherited
inDirection(FocusNode currentNode, TraversalDirection direction) bool
Focuses the next widget in the given direction in the FocusScope that contains the currentNode.
mustCallSuper">@mustCallSuperoverride
invalidateScopeData(FocusScopeNode node) → void
Clears the data associated with the given FocusScopeNode for this object.
override
next(FocusNode currentNode) bool
Focuses the next widget in the focus scope that contains the given currentNode.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed.
inherited
previous(FocusNode currentNode) bool
Focuses the previous widget in the focus scope that contains the given currentNode.
inherited
sortDescendants(Iterable<FocusNode> descendants, FocusNode currentNode) Iterable<FocusNode>
Sorts the given descendants into focus order.
protected">@protectedinherited
toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep.
inherited
toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) String
A string representation of this object.
inherited
toStringShort() String
A brief description of this object, usually just the runtimeType and the hashCode.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited