- 27 Sep, 2020 1 commit
-
-
Alexandre Ardhuin authored
* apply upcoming lint cast_nullable_to_non_nullable * make RenderObjectElement.renderObject non-nullable
-
- 15 Sep, 2020 1 commit
-
-
Alexandre Ardhuin authored
* Reland "Nnbd widgets (#64672)" This reverts commit 127e6790. * remove non-nullable enforcement on AsyncSnapshot * make data param non-nullable for AsyncSnapshot.withData * make some Text params non-nullable
-
- 09 Sep, 2020 2 commits
-
-
Michael Goderbauer authored
This reverts commit e682ec71.
-
Alexandre Ardhuin authored
* migrate widget to nullsafety * remove double blank line after license * address review comments in actions.dart * nullable ObjectKey.value * use local variable oldElement * make State.build non-nullable * make State.context non-nullable * newline at eof * make ProxyWidget.child non-nullable * make _InactiveElements.debugContains non-nullable * make Element.depth non-nullable * make ProxyElement.build non-nullable * make StatefulElement.state non-nullable * remove 'Notice that' * avoid cast of list in RenderObjectElement.updateChildren * make IndexedSlot.value non-nullable * avoid cast of list in MultiChildRenderObjectElement.mount * make some WidgetsApp parameters non-nullable * hitTest take non-nullable position * make ScrollableState.position non-nullable * use _pixels instead of pixels * make ViewportOffset.pixels non-nullable * make param and return type of IndexedWidgetBuilder non-nullable * unused_import * make context param non-nullable for Builder in animated_list.dart * make ScrollMetrics.viewportDimension non-nullable * make ScrollMetrics.{min,max}ScrollExtent non-nullable * make _Location.file non-nullable * _WidgetForTypeTests.createElement throw UnimplementedError * update _NullWidget.build error message * make _ShortcutsState.manager non-nullable * Fix childCount issues for NNBD * fix childCount computation on web * increase max value on js side to compute childCount * make aspect parameter of dependOnInheritedWidgetOfExactType nullable * merge has{min,max}ScrollExtent into hasScrollExtents * update focus_manager.dart * address review comments in icon.dart * address review comments in image.dart * address review comments in routes.dart * address review comments in scroll_activity.dart * update doc comments * make UserScrollNotification.direction non-nullable and required * rename hasScrollExtents to hasContentDimensions * unnecessary late Co-authored-by:
Ian Hickson <ian@hixie.ch>
-
- 30 Jul, 2020 1 commit
-
-
Greg Spencer authored
-
- 29 Jul, 2020 2 commits
-
-
Michael Goderbauer authored
-
Michael Goderbauer authored
-
- 28 Jul, 2020 1 commit
-
-
Darren Austin authored
Updated references to the old button classes to the new ones in comments and documentation for classes in the widgets, services and rendering libraries. (#62099)
-
- 23 Jul, 2020 1 commit
-
-
Greg Spencer authored
This changes FocusNode.descendantsAreFocusable so that it doesn't allow the enclosing scope to re-focus a node that is a descendant of the node with descendantsAreFocusable set to false. Because of the order in which the internal state for descendantsAreFocusable was being set, setting it to false was causing a sibling node to be focused when descendantsAreFocusable of the parent was set to false, even though it shouldn't have been focusable, because the enclosing scope would search for a candidate to be focused before the internal state was set to false. Instead of looping over the children and telling them all to unfocus (and select the previously focused node), this unfocuses the node that has descendantsAreFocusable set to false, with the disposition UnfocusDisposition.previouslyFocusedChild, so that its enclosing scope will look for a previously focused child that isn't part of the subtree being excluded. This affects how the ExcludeFocus widget behaves when turning on exclude.
-
- 25 Jun, 2020 1 commit
-
-
Greg Spencer authored
-
- 11 Jun, 2020 1 commit
-
-
Alexandre Ardhuin authored
* add language version 2.8 in packages/flutter * enable non-nullable analyzer flag
-
- 01 May, 2020 1 commit
-
-
Greg Spencer authored
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).
-
- 27 Apr, 2020 1 commit
-
-
Greg Spencer authored
-
- 10 Apr, 2020 1 commit
-
-
Greg Spencer authored
This fixes the initial value of FocusManager.highlightMode so that it gets initialized correctly on desktop platforms. My recent update of this code (#52990) broke things so that the highlight mode never changed from the initial default of touch, which meant that focus highlights didn't show unless you set FocusManager.highlightStrategy to something (even automatic, the default: setting it caused the mode to be updated).
-
- 04 Apr, 2020 1 commit
-
-
Greg Spencer authored
-
- 27 Mar, 2020 1 commit
-
-
Ferhat authored
-
- 11 Mar, 2020 1 commit
-
-
Greg Spencer authored
This converts Diagnosticable to be a mixin instead of an abstract class, so that it can be used to add diagnostics to classes which already have a base class. It leaves in place the DiagnosticableMixin mixin, since there are some plugins that are still using it, and removing it would mean that those plugins wouldn't work with master branch Flutter anymore. DiagnosticableMixin will be removed once this mixin version of Diagnosticable makes its way to the stable branch.
-
- 27 Feb, 2020 1 commit
-
-
Greg Spencer authored
When Focus.unfocus is called, the caller usually just thinks about wanting to remove focus from the node, but really, unfocus is a request to automatically pass the focus to another (hopefully useful) node. This PR removes the focusPrevious flag from unfocus, and replaces it with a disposition enum that indicates where the focus should go from here. The other value of the UnfocusDisposition enum is UnfocusDisposition.scope. UnfocusDisposition.previouslyFocusedChild is closest to what focusPrevious used to do: focus the nearest enclosing scope and use its focusedChild field to walk down the tree, finding the leaf focusedChild. This PR modifies it slightly so that it walks up to the nearest focusable enclosing scope before trying to focus the children. This change addresses #48903 A new mode: UnfocusDisposition.scope will focus the nearest focusable enclosing scope of this node without trying to use the FocusScopeNode.focusedChild value to descend to the leaf focused child. This is useful as a default for both text field finalization and for what happens when canRequestFocus is set to false. It allows the scope to stay focused so that nextFocus/previousFocus still work as expected, but removes the focus from primary focus. In addition to those changes, unfocus called on a FocuScope that wasn't the primary focus used to unfocus the primary focus instead. I removed that behavior, since it was buggy: if the primary focus was inside of a child scope, and you called unfocus on the parent scope, then the child scope could have focused another of its children instead, leaving the scope that you called unfocus on with hasFocus returning true still. If you want to remove the focus from the primary focus instead of the scope, that's easy enough to do: just call primaryFocus.unfocus(). Fixes #48903
-
- 20 Feb, 2020 1 commit
-
-
Greg Spencer authored
-
- 13 Feb, 2020 2 commits
-
-
Greg Spencer authored
This re-lands #49235 with the addition of includeSemantics flag on the Focus widget so that the FocusTraversalGroup can create a Focus widget without affecting the semantics tree. The FocusTraversalGroup uses the Focus widget to create a grouping of descendants for traversal, but doesn't actually participate in focus (canRequestFocus is always false), so we don't want it to add a Semantics widget in that case, since that can cause semantics changes. The canRequestFocus attribute can also be used when a widget is disabled, so we do sometimes want to include Semantics even if that is false, but not in the case where it is always false, as for FocusTraversalGroup. - Added a test to make sure that FocusTraversalGroup doesn't add any semantics information.
-
Greg Spencer authored
This fixes a problem when unfocusing focus nodes where the ancestor focus nodes and scopes don't receive notification that a child was unfocused. Fixes #43497
-
- 12 Feb, 2020 1 commit
-
-
Greg Spencer authored
This reverts commit 8ef5e2f0 because it breaks some semantics tests.
-
- 11 Feb, 2020 1 commit
-
-
Greg Spencer authored
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).
-
- 10 Feb, 2020 2 commits
-
-
Greg Spencer authored
This makes FocusManager a ChangeNotifier that notifies when the primaryFocus changes so that an app can track the current focus. Fixes #50501
-
Greg Spencer authored
This PR modifies the existing API docs samples to use DartPad so that all of the samples are now interactive apps on the API docs site. It also removes the restriction for the max width of the description area so that the dartpad region can expand horizontally. I updated the first paragraph on the API docs to indicate that Flutter is more than just mobile now (same text as the README.md at the top level). I modified a few of the examples so that they looked nicer, and fit better on the page. I added the sample description text above each DartPad instance, since that often defines the context of the example. I removed animations and images when they were redundant with the sample content. There were a few that made sense to keep, so I did.
-
- 29 Jan, 2020 1 commit
-
-
Dan Field authored
-
- 25 Jan, 2020 1 commit
-
-
Hans Muller authored
-
- 13 Jan, 2020 1 commit
-
-
Greg Spencer authored
This changes the behavior of requestFocus when it is called on a FocusNode that does not yet have a parent, so that it defers requesting focus until it receives a parent. Before this change, calling requestFocus before it had a parent was a no-op. This allows scenarios where a widget is newly added and wishes to immediately request the focus. Previously, it was very hard to make that work because requesting focus before the widget's focus node had a parent was ignored, so the developer had to wait until two frames later to request focus (one for the widget's node to be added to the focus tree, and one to request the focus). Now, in order to have a widget be focused when initially added, you just need to call requestFocus on its node when you create it, and as soon as it is added, it will automatically request focus. This is different from the autofocus attribute on the Focus widget, because it unconditionally requests focus when added (autofocus will only request focus if nothing else in the scope has focus).
-
- 08 Jan, 2020 1 commit
-
-
Greg Spencer authored
-
- 07 Jan, 2020 1 commit
-
-
Alexandre Ardhuin authored
-
- 05 Dec, 2019 2 commits
-
-
Greg Spencer authored
This fixes an issue where lines like this: focusNode.canRequestFocus = widget.canRequestFocus ?? focusNode.canRequestFocus; Were causing the canRequestFocus bit to copy the status of the enclosing scope, since canRequestFocus also looks to the enclosing scope to decide if it can focus.
-
Greg Spencer authored
This normalizes all of the "See also" blocks in comments so that they conform in style. They all look like this now: /// See also: /// /// * [MyFavoriteWidget], because it's cool. class Foo {} I removed some useless "See also" blocks, and added commentary to ones that were just "bare" references. This is my penance for adding so many bullets that are "-" instead of "*". :-)
-
- 04 Dec, 2019 1 commit
-
-
Alexandre Ardhuin authored
* implicit-casts:false in flutter/lib/src/widgets * address review comments * address review comment
-
- 03 Dec, 2019 1 commit
-
-
Greg Spencer authored
This fixes some minor things I noticed while doing another change. - Uncomments an old test that wants to be run, but can't be, and marked it as "skipped", so that the code won't rot anymore. - Added the focus state to the short string version of a FocusNode - Added a missing piece of information to findAncestorWidgetOfExactType
-
- 27 Nov, 2019 1 commit
-
-
Ian Hickson authored
* Update project.pbxproj files to say Flutter rather than Chromium Also, the templates now have an empty organization so that we don't cause people to give their apps a Flutter copyright. * Update the copyright notice checker to require a standard notice on all files * Update copyrights on Dart files. (This was a mechanical commit.) * Fix weird license headers on Dart files that deviate from our conventions; relicense Shrine. Some were already marked "The Flutter Authors", not clear why. Their dates have been normalized. Some were missing the blank line after the license. Some were randomly different in trivial ways for no apparent reason (e.g. missing the trailing period). * Clean up the copyrights in non-Dart files. (Manual edits.) Also, make sure templates don't have copyrights. * Fix some more ORGANIZATIONNAMEs
-
- 22 Nov, 2019 1 commit
-
-
Greg Spencer authored
No code changes, just comments: I spell-checked all the comments in the repo.
-
- 01 Nov, 2019 1 commit
-
-
Greg Spencer authored
This adds accessors for WidgetsBinding.instance.focusManager and WidgetsBinding.instance.focusManager.primaryFocus so that they can be more easily found in IDEs and accessed. This adds a top level getter for WidgetsBinding.instance.focusManager.primaryFocus called primaryFocus, and a static accessor FocusManager.instance that returns WidgetsBinding.instance.focusManager.
-
- 30 Oct, 2019 1 commit
-
-
Greg Spencer authored
This re-lands the change that adds focus nodes, hover, and shortcuts to switches, checkboxes, and radio buttons. (#43213), with fixes for the web tests that weren't enabled in the master that it was synced to when I first landed it.
-
- 28 Oct, 2019 2 commits
-
-
Greg Spencer authored
Revert "Re-Land: Add focus nodes, hover, and shortcuts to switches, checkboxes, and radio buttons. (#43384)" (#43647) This reverts commit 8017f63b, since it breaks web tests.
-
Greg Spencer authored
This re-lands the change that adds focus nodes, hover, and shortcuts to switches, checkboxes, and radio buttons. (#43213) No changes from original, except for finding the right RenderBox in dev/integration_tests/android_semantics_testing/test_driver/main_test.dart.
-