flutter/dev/manual_tests
Greg Spencer 8ef5e2f046
Add OrderedFocusTraversalPolicy and FocusTraversalGroup to all… (#49235)
This change adds a way to provide explicit focus order for a part of the widget tree.

It adds FocusTraversalPolicyGroup, which in many ways is similar to DefaultFocusTraversal, except that it groups a widget subtree together so that those nodes are traversed as a group. DefaultFocusTraversal doesn't work as one would expect: If there is more than one DefaultFocusTraversal inside of a focus scope, the policy can change depending on which node was asked to move "next", which can cause unexpected behavior. The new grouping mechanism doesn't have that problem. I deprecate DefaultFocusTraversal in this PR.

It also adds OrderedFocusTraversalPolicy, which is a policy that can be supplied to FocusTraversalPolicyGroup to set the policy for a sub-tree. It looks for FocusTraversalOrder inherited widgets, which use a FocusOrder to do the sorting. FocusOrder has two subclasses: NumericalFocusOrder (which sorts based on a double), and LexicalFocusOrder, which sorts based on a String.

As part of doing this, I refactored the way FocusTraversalPolicy is implemented so that it has more default implementation methods, and exposes a new protected member: sortDescendants, which makes it easier for developers to make their own policy subclasses: they only need to implement sortDescendants to get a new ordering behavior, but can also still override any of the default implementation behaviors if they need different behavior.

I was able to do this without breaking the API (AFAICT).
2020-02-11 09:18:39 -08:00
..
android License update (#45373) 2019-11-27 15:04:02 -08:00
ios License update (#45373) 2019-11-27 15:04:02 -08:00
lib Add OrderedFocusTraversalPolicy and FocusTraversalGroup to all… (#49235) 2020-02-11 09:18:39 -08:00
macos License update (#45373) 2019-11-27 15:04:02 -08:00
test implicit-casts:false in dev (#45787) 2019-12-05 22:34:06 +01:00
web License update (#45373) 2019-11-27 15:04:02 -08:00
.metadata Update manual_tests to be able to run on macOS/web (#44830) 2019-11-19 11:29:35 -08:00
pubspec.yaml Update package test (#44882) 2019-11-14 09:31:36 -08:00