This makes the callback arguments to FocusableActionDetector optional, if you (for instance) only want to define shortcuts and actions and a focus node for something.
* Add clipBehavior to RenderFlex
* Add clipBehavior to FittedBox
* Add clipBehavior to Flex and FittedBox
* Add clipBehavior to UnconstrainedBox
* Add clipBehavior to Stack and Wrap
* Add clipBehavior to TextEditable
* Add clipBehavior to ListWheelScrollView
* Add clipBehavior to SingleChildScrollView
* Add clipBehavior to RenderViewportBase's widgets
Those widgets are NestedScrollView and ShrinkWrappingViewport.
* Fix tests
* Remove enum Overflow and fix typo
* Remove clipToSize
* Analyze fix
* Remove Mixin and other small fixes
* Fix tests and respect Stack's default clipBehavior
* Add Overflow back to make it non-breaking
* Restore clipBehavior to make it non-breaking
* Small fixes
* Fix rebase
* Add function to set structured error early
* Remove unused imports
* Save test handler in setUp
* Add utils file for shared test service
* Rename structured error functions
* Use setUpAll to save error handler and call initStructuredError from other init
* Rename widget inspector test service
* Remove debugging print statement
* Move error handling setting back to initServiceExtensions
* Rename structured error handler in test
* Namespace environment variable
* Rename test
This adds a new navigationMode to the MediaQueryData that indicates how focusable controls should behave under different navigation modes, currently with two modes: NavigationMode.traditional, and NavigationMode.directional.
It may seem like focusing a disabled control is not desirable, but this is useful for user interfaces that use DPAD navigation because if a control gets disabled, losing focus is disruptive to the user, and it is difficult to control where the focus will end up unless it is done explicitly.
* Uses a special cursor value MouseCursor.defer to mark deferring. MouseTrackerAnnotation.cursor is now non-null. The mouseCursor argument of widgets or render objects can be null, which indicates using the default value.
* Moves SystemMouseCursors.uncontrolled to MouseCursor.uncontrolled.
* Changes how MouseCursor.debugDescription is defined. Previously MouseCursor.toString returns $runtimeType($debugDescription), while now it returns $debugDescription. Implementations of classes are updated, except for the ones of MouseCursor.defer and MouseCursor.uncontrolled are simply "defer" and "uncontrolled".
* Expose includeSemantics option to RawKeyboardListener
* Revert "Expose includeSemantics option to RawKeyboardListener"
This reverts commit 684edccfb0bacb358285b34b7a6dafd45a070ca7.
* Set includeSemantics to false
* Expose includeSemantics for RawKeyboardListener
* Add test
Avoid calling `builder` in `ConstrainedLayoutBuilder` when layout constraints are the same.
[Design doc](flutter.dev/go/layout-builder-optimization).
## Related Issues
Fixes https://github.com/flutter/flutter/issues/6469
This adds an ExcludeFocus widget that prevents widgets in a subtree from having or obtaining focus. It also adds the ability for a FocusNode to conditionally prevent its children from being focusable when it isn't focusable (i.e. when canRequestFocus is false).
It does this by adding an descendantsAreFocusable attribute to the FocusNode, which, when false, prevents the descendants of the node from being focusable (and removes focus from them if they are currently focused).