2228 Commits

Author SHA1 Message Date
Amir Hardon
f545f47d8f
Add a FocusNode for AndroidView widgets. (#32773)
The PlatformViewsService listens for `viewFocused` calls on the
platform_views system channel and fires a callback that focuses the
focus node for the relevant AndroidView widget.
2019-05-15 15:25:50 -07:00
Greg Spencer
bb3c660522
Implements focus handling and hover for Material buttons. (#31438)
This implements focus and hover handling for Material buttons. It inserts Focus widgets into the tree in order to allow buttons to be focusable via keyboard traversal (a.k.a. TAB traversal), and Listener widgets into the InkWell to allow the detection of hover states for widgets.

Addresses #11344, #1608, and #13264.
2019-05-14 20:48:29 -07:00
Efthymis Sarmpanis
7498ad00b5 Add a more meaningful message to the assertion on children property of MultiChildRenderObjectWidget and SliverChildListDelegate. (#32487) 2019-05-14 12:41:07 -07:00
Mouad Debbar
bcae3563d4
Redo: Show/hide toolbar and handles based on device kind (#32704) 2019-05-14 11:04:16 -07:00
Mouad Debbar
ef5abcc6bf
Revert "Show/hide toolbar and handles based on device kind (#29683)" (#32702)
This reverts commit 18ca37542d8e946724f1ccc41b6d7c98c28d7164.
2019-05-14 09:33:04 -07:00
Mouad Debbar
18ca37542d
Show/hide toolbar and handles based on device kind (#29683) 2019-05-14 08:50:23 -07:00
Greg Spencer
d2fe08628d
Implements FocusTraversalPolicy and DefaultFocusTraversal features. (#30076)
This implements a DefaultFocusTraversal widget to describe the focus traversal policy for its children, defined by a FocusTraversalPolicy object from which custom policies may be created. Pre-defined policies include widget-order traversal, "reading order" traversal and directional traversal.
2019-05-09 20:24:23 -07:00
Michael Goderbauer
1621baafc7
Introduce separate HitTestResults for Box and Sliver (#31894) 2019-05-09 10:00:01 +02:00
Greg Spencer
aeccd6a8bc
Fix nested listeners so that ancestor listeners can also receive enter/exit/move events. (#32350)
This changes Listener to trigger enter/move/exit in all Listeners below the pointer, not just the leaf region (the first region hit). This is because we need to allow listeners to be nested so that, say, a widget that handles changing color on hover, but also is wrapped in a Tooltip (that handles hover) can trigger both actions, not just one.

To that end, I added a findAll to Layer, similar to the existing find method that was previously used. It returns an iterator over annotated layers which match the given data type.

Since the findAll is implemented as returning an Iterable (and is sync*), I re-implemented the find routines as just returning the first result from findAll, since that should be just as efficient, and would then prevent duplication in the implementation.
2019-05-08 17:57:42 -07:00
Greg Spencer
23baae0e45
Fix RenderPointerListener so that callbacks aren't called at the wrong time. (#32142)
I recently added some code to keep hover events from being propagated when a mouse wasn't attached. While that works, there are times when it can fire callbacks during the building of other components, since they can now be called from detach/attach. This is not ideal, since it will assert then. This changes the code so that it won't update the annotations during attach/detach, but also won't push the annotation layer unless a mouse is connected, achieving the same result as before, but with better semantics.

The basic problem is that in the detach for RenderPointerListener, it would detach the annotation, which could cause onExit to be called on the annotation, since the widget was disappearing under the mouse, and thus needs to receive an onExit, but that onExit might be (and probably will be) calling setState, which marks the owning widget as needing to be built, sometimes when it already has been.

The fix creates a new _ListenerElement that overrides activate and deactivate in order to tell the render object ahead of the detach that it might be detached, and so the onExit gets called before the detach instead of during it.

In addition, I now avoid scheduling more than one check for mouse positions per frame.
2019-05-08 12:20:31 -07:00
yaheng
57d6666462 Fix text selection toolbar appearing under obstructions (#29809) 2019-05-06 11:18:09 -07:00
Michael Goderbauer
ea03ac2b84
Revert "Sliver animated list (#28834)" (#32135)
This reverts commit d2de911d50ea792d6743b2cdc74e8daf26112b91.
2019-05-06 11:53:32 +02:00
Simon Binder
d2de911d50 Sliver animated list (#28834) 2019-05-06 11:26:38 +02:00
Shi-Hao Hong
2f75005a16
Fix Exception on Nested TabBarView disposal (#31581)
* Add Flag to determine if pixels is set by viewport during disposal

* Add TODO to remove nested TabBarView workaround once unnecessary build/dispose issues are resolved
2019-05-04 09:14:49 -07:00
Justin McCandless
0a3df1b576
Text wrap width (#31987)
Add `textWidthBasis` param to Text to allow calculating width according to longest line.
2019-05-03 11:41:07 -07:00
chunhtai
38808d9fe4
Reland fix 25807 implement move for sliver multibox widget (#31978) 2019-05-03 09:48:20 -07:00
Efthymis Sarmpanis
39d660be78 Extract TODO comment from Image.asset dardoc (#31903) 2019-05-03 08:29:02 -07:00
Justin McCandless
34325ba33a
Revert "Tight Paragraph Width (#30988)" (#31979)
This reverts commit 323108ff47fd6caaeb8eaf30716e70d860673a1e due to weird engine dependency bug
2019-05-02 10:36:51 -07:00
Justin McCandless
323108ff47
Tight Paragraph Width (#30988)
Add `textWidthBasis` param to Text to allow calculating width according to longest line.
2019-05-02 09:21:45 -07:00
James Lin
0c20a2ed01 Fix MediaQueryData.toString() to generate readable output
MediaQueryData.toString() omitted commas and spaces around some
properties, making the output difficult to read.
2019-05-02 08:44:51 -07:00
Todd Volkert
f48cc4611a
Add documentation to Navigator (#31851) 2019-05-02 08:02:11 -07:00
Jacob Richman
e17f9e8ff8
Fix bug handling cyclic diagnostics. (#31960) 2019-05-01 22:09:53 -07:00
LongCatIsLooong
15f187fce0
Add docs to AppBar (#31317)
- Added docs to AppBar to cover AppBar's inherited MediaQuery when not used in a Scaffold in general
- s/Hero]s/Hero]es/
2019-05-01 20:39:37 -07:00
Greg Spencer
be75fb36c5
Change unfocus to unfocus the entire chain, Fix setFirstFocus (#31909)
In #31614, I added an unfocus() to FocusNodes to allow giving up of focus, but it only worked on the primary focus. This changes that so that it will unfocus the entire chain, not just the primary focus. Now, if you call unfocus() on a FocusNode or FocusScopeNode, and their hasFocus returns true, then after calling unfocus(), it will return false. Before this change, it would only do that if hasPrimaryFocus was also true.

This also fixes a bug in the way setFirstFocus was implemented, making it conform more to the behavior of the previous implementation. It has simplified logic in reparent, and in when it requests focus for scope nodes that have had setFirstFocus called on them.
2019-05-01 12:20:41 -07:00
Jacob Richman
63aa5b3647
Refactor core uses of FlutterError. (#30983)
Make FlutterError objects more structured so they can be displayed better in debugging tools such as Dart DevTools.
2019-05-01 11:20:12 -07:00
Jonah Williams
60a1b2b9ea
Revert "Redo: Add buttons to gestures (#31819)" (#31912)
This reverts commit fea2c7d671633fea21bfc93ccddbb57c4510752f.
2019-05-01 10:06:45 -07:00
Dan Field
4bc35fc87a
Allow DSS to be dragged when its children do not fill extent (#31832)
* Allow DSS to be dragged when its children do not fill extent

* Fix when maxChildSize  < 1.0
2019-04-30 15:42:42 -07:00
Tong Mu
fea2c7d671
Redo: Add buttons to gestures (#31819)
* Revert "Revert "Add buttons to gestures (#30339)" (#31801)"

This reverts commit 8fd7fa492aaad0d0d4aa062d71b1ecba8b0d4f44.

* Synthesise kPrimaryButton for unknown devices

* Change TestPointer to a better API
2019-04-30 09:56:24 -07:00
liyuqian
7cab6d5e1c
Support clipBehavior changes in hot reload (#31761)
## Description

Make `_RenderCustomClip`'s `clipBehavior` non-final so we can update it during `updateRenderObject`. This will support `clipBehavior` changes in hot reload.

## Related Issues

Fixes #30863

## Tests

I added the following tests:

* ClipRect updates clipBehavior in updateRenderObject
* ClipRRect updates clipBehavior in updateRenderObject
* ClipOval updates clipBehavior in updateRenderObject
* ClipPath updates clipBehavior in updateRenderObject
* PhysicalModel updates clipBehavior in updateRenderObject
* PhysicalShape updates clipBehavior in updateRenderObject
2019-04-30 09:46:38 -07:00
Jonah Williams
37e25238a8
Attempt to reduce usage of runtimeType (#31696) 2019-04-29 16:44:50 -07:00
Dan Field
fe9512fa72
Re-enable const (#31600)
* Re-enable const
2019-04-29 16:02:42 -07:00
Jonah Williams
8fd7fa492a
Revert "Add buttons to gestures (#30339)" (#31801)
This reverts commit 727e7e829f4debf7a7aaaad3c37151b362ed4cba.
2019-04-29 12:59:30 -07:00
Tong Mu
727e7e829f
Add buttons to gestures (#30339)
* Callbacks of tap, long press, drag, and double tap GR respond to only primary events.
* Add "secondary" callbacks to tap.
* Recognizers only compete on events if there are any related callbacks.
* Add "kSecondaryButton" constant.
2019-04-29 10:46:33 -07:00
Dmitriy Zaitsev
8e66c53f3d Fix the documentation for UiKitView#creationParams (#31619)
It looks like the documentation for UiKitView has been copy-pasted from AndroidView or so.
This PR fixes the word 'Android' to 'iOS' for the `creationParams`.
2019-04-29 14:50:44 +02:00
Sander Kersten
9d16b84b35 Fix calculation of hero rectTween when Navigator isn't fullscreen (#29677) 2019-04-29 14:43:44 +02:00
xster
26d7f502a9
Add some docs to StatefulBuilder (#31291) 2019-04-26 18:10:18 -07:00
Dan Field
6a48e663ef
Bottom sheet scrolling (#21896) 2019-04-26 14:12:11 -07:00
LongCatIsLooong
7d19f97d03
Fix refresh control in the gallery demo, update comments (#30129)
- Fixed the bug where CupertinoRefreshControl doesn't work in the gallery demo on Android.
- Updated documentation on CupertinoRefreshControl
- Added comments to the gallery demo
- Added concrete examples to ScrollPhysics
2019-04-25 20:49:47 -07:00
Todd Volkert
e57d0ff73b
Fix doc link (#31638) 2019-04-25 20:31:45 -07:00
Greg Spencer
7775c23784
[Re-Land] Implement focus traversal for desktop platforms. (#31614)
This re-lands the Focus changes in #30040. Correctness changes in routes.dart, and removes the automatic requesting of focus on reparent when there is no current focus, which caused undesirable selections.

Addresses #11344, #1608, #13264, and #1678
Fixes #30084
Fixes #26704
2019-04-25 16:26:58 -07:00
Justin McCandless
a21a1f4105
iOS selection handles are invisible (#31332)
Fix a bug where text selection handles were invisible in iOS
2019-04-25 12:32:10 -07:00
xster
8cfc92465d
CupertinoPicker fidelity revision (#31464) 2019-04-25 00:03:04 -07:00
Todd Volkert
e00f1a3c17
Fix typo in docs (#31538) 2019-04-24 07:43:01 -07:00
chunhtai
5c5ddd1fc2
Revert "Fix 25807: implement move for sliver multibox widget (#29188)" (#31497)
This reverts commit 77ab0b83214792e8e6117295982c9397e03193a2.
2019-04-23 10:41:19 -07:00
liyuqian
981e922aa1
Improve docs to address flutter/flutter#31202 (#31454)
## Description

Clarify that ClipRect can be added to ensure that CustomPainter will be drawing within bounds.

## Related Issues

https://github.com/flutter/flutter/issues/31202
2019-04-23 09:57:05 -07:00
Greg Spencer
590cc27b31
Revert "Implement focus traversal for desktop platforms, shoehorn edition. (#30040)" (#31461)
This reverts commit 4218c0bc38bc74a97b1b03d7b8b7f0ce32e29468.
2019-04-22 18:02:35 -07:00
Todd Volkert
b9170a9d9a
Add more breadcrumb docs to Transformation (#31420) 2019-04-22 09:53:03 -07:00
Todd Volkert
9a4a3fc62a
Add Widget of the Week video to SizedBox (#31421) 2019-04-22 09:52:41 -07:00
Greg Spencer
4218c0bc38
Implement focus traversal for desktop platforms, shoehorn edition. (#30040)
Implements focus traversal for desktop platforms, including re-implementing the existing focus manager and focus tree.

This implements a Focus widget that can be put into a widget tree to allow input focus to be given to a particular part of a widget tree.

It incorporates with the existing FocusScope and FocusNode infrastructure, and has minimal breakage to the API, although FocusScope.reparentIfNeeded is removed, replaced by a call to FocusAttachment.reparent(), so this is a breaking change:

FocusScopeNodes must now be attached to the focus tree using FocusScopeNode.attach, which takes a context and an optional onKey callback, and returns a FocusAttachment that should be kept by the widget that hosts the FocusScopeNode. This is necessary because of the need to make sure that the focus tree reflects the widget hierarchy.

Callers that used to call FocusScope(context).reparentIfNeeded in their build method will call reparent  on a FocusAttachment instead, which they will obtain by calling FocusScopeNode.attach in their initState method. Widgets that own FocusNodes will need to call dispose on the focus node in their dispose method.

Addresses #11344, #1608, #13264, and #1678
Fixes #30084
Fixes #26704
2019-04-22 09:51:40 -07:00
chunhtai
77ab0b8321
Fix 25807: implement move for sliver multibox widget (#29188) 2019-04-22 09:28:53 -07:00