281 Commits

Author SHA1 Message Date
Ian Hickson
87445e5913 Increase the touch slop. (#11419)
It was 8.0. It's now arbitrarily 18.0.

Changing this required adjusting some tests. Adjusting the tests
required debugging the tests. Debugging the tests required some tools
to help debugging gesture recognizers and gesture arenas, so I added
some. It also required updating some toString() methods which resulted
in some changes to the tree diagnostics logic.

Also I cleaned up some docs while I was at it.
2017-07-27 14:01:06 -07:00
Jason Simmons
838bd63182 Control raster cache flags in CustomPaint widgets (#11398) 2017-07-25 16:39:03 -07:00
Jacob Richman
9f510ebdc9 Refactor RenderObject.toStringDeep and Widget.toStringDeep code to use DiagnosticsNode (#11359)
Refactor RenderObject.toStringDeep and Widget.toStringDeep code to use DiagnosticsNode.
2017-07-25 09:25:13 -07:00
Ian Hickson
dd40d0e29c Modal barrier shouldn't paint when the route is offstage. (#11347)
Fixes https://github.com/flutter/flutter/issues/11323
2017-07-21 16:39:11 -07:00
Collin Jackson
e0f3001fde Fix physics with NestedScrollView (#11326)
* Fix physics with NestedScrollView

* Review feedback
2017-07-21 18:42:12 -04:00
Ian Hickson
1f08bda304 AnimatedCrossFade layout customisation (#11343)
* Optimise AnimatedSize for the tight case.
* Remove `default` from a switch statement over enum (so that analyzer will complain if we add enum values).
* Adopt the Size since we use it after the child may have changed (which would throw normally).
* AnimatedCrossFade.layoutBuilder
2017-07-21 15:23:55 -07:00
Michael Goderbauer
b5c461a917 a11y: implement new SemanticsAction "showOnScreen" (v2) (#11156)
* a11y: implement new SemanticsAction "showOnScreen" (v2)

This action is triggered when the user swipes (in accessibility mode) to the last visible item of a scrollable list to bring that item fully on screen.

This requires engine rolled to flutter/engine#3856.

I am in the process of adding tests, but I'd like to get early feedback to see if this approach is OK.

* fix null check

* review comments

* review comments

* Add test

* fix analyzer warning
2017-07-19 16:40:24 -07:00
Yegor
669e13ebd4 AnimatedSize: state machine, tests, animate only when needed (#11305) 2017-07-19 15:53:28 -07:00
Yegor
02b65bc984 AnimatedCrossFade: shut off animations & semantics in faded out widgets (#11276)
* AnimatedCrossFade: shut off animations & semantics in faded out widgets

* address comments
2017-07-19 15:45:31 -07:00
Michael Goderbauer
1744e8e0aa Expose the currently available semantic scroll actions (#11286)
* Expose the currently available semantic scroll actions

* review comments

* add test

* refactor to set
2017-07-19 12:21:36 -07:00
Hans Muller
daa7860ef0 Add a ScrollController parameter to NestedScrollView (#11242) 2017-07-18 18:24:38 -07:00
xster
5756d62931 Fix overscroll friction for small lists (#11243) 2017-07-14 18:33:20 -07:00
Michael Goderbauer
b619759133 Adds a RouteObserver (#11236)
* Adds a PageRouteObserver

Required for https://github.com/flutter/plugins/pull/174.
See also https://github.com/flutter/flutter/issues/11216.

* formatting fixes

* Make RouteObserver generic
2017-07-14 17:44:30 -07:00
Michael Goderbauer
ee632c3919 Exclude modal barrier from semantics on Android (#11024)
* Exclude modal barrier from semantics on Android

* Add tests
2017-07-06 10:15:03 -07:00
xster
47c4d64f01 Match non-linear overscroll spring to iOS (#11065)
* Make the drag resistance non-linear

* Let the easing of overscroll have a spring effect too

* Add tests and prevent possible drift by having a slightly smaller resistance when easing the overscroll

* lint
2017-07-05 18:39:22 -07:00
Ian Hickson
7ba1879bfc Automatic silver keep alive (#11067)
* AutomaticKeepAlive

A Widget that listens for notifications from widgets that don't want to die.

* Automatically wrap SliverList and SliverGrid children in AutomaticKeepAlive widgets

* Fixes for review comments
2017-07-01 14:16:36 -07:00
Jacob Richman
9dab22684a More toStringDeep and toString tests. (#11028) 2017-06-29 18:57:21 -07:00
Ian Hickson
5279563071 Keep-alive for widgets in lazy lists (#11010) 2017-06-28 14:06:40 -07:00
Jacob Richman
76a50fe0ca Switch existings tests to use equalsIgnoringHashCodes and add more tests. (#10954)
* Switch existings tests to use equalsIgnoringHashCodes and add more tests.
2017-06-27 10:44:35 -07:00
Ian Hickson
9adb4a78a6 Deep linking: automatically push the route hiearchy on load. (#10894)
The main purpose of this PR is to make it so that when you set the
initial route and it's a hierarchical route (e.g. `/a/b/c`), it
implies multiple pushes, one for each step of the route (so in that
case, `/`, `/a`, `/a/b`, and `/a/b/c`, in that order). If any of those
routes don't exist, it falls back to '/'.

As part of doing that, I:

 * Changed the default for MaterialApp.initialRoute to honor the
   actual initial route.

 * Added a MaterialApp.onUnknownRoute for handling bad routes.

 * Added a feature to flutter_driver that allows the host test script
   and the device test app to communicate.

 * Added a test to make sure `flutter drive --route` works.
   (Hopefully that will also prove `flutter run --route` works, though
   this isn't testing the `flutter` tool's side of that. My main
   concern is over whether the engine side works.)

 * Fixed `flutter drive` to output the right target file name.

 * Changed how the stocks app represents its data, so that we can
   show a page for a stock before we know if it exists.

 * Made it possible to show a stock page that doesn't exist. It shows
   a progress indicator if we're loading the data, or else shows a
   message saying it doesn't exist.

 * Changed the pathing structure of routes in stocks to work more
   sanely.

 * Made search in the stocks app actually work (before it only worked
   if we happened to accidentally trigger a rebuild). Added a test.

 * Replaced some custom code in the stocks app with a BackButton.

 * Added a "color" feature to BackButton to support the stocks use case.

 * Spaced out the ErrorWidget text a bit more.

 * Added `RouteSettings.copyWith`, which I ended up not using.

 * Improved the error messages around routing.

While I was in some files I made a few formatting fixes, fixed some
code health issues, and also removed `flaky: true` from some devicelab
tests that have been stable for a while. Also added some documentation
here and there.
2017-06-23 14:58:29 -07:00
Jacob Richman
595cd23c8c Change all occurrences of '$runtimeType#$hashCode' to use the describeIdentity (#10888)
* Revert "Revert "Change all ocurrences of '$runtimeType#$hashCode' to use the idAndType method. (#10871)" (#10880)"

This reverts commit ceb814aa647ecd310794a72a7a5c28820ec57a25.
2017-06-21 10:47:06 -07:00
Jacob Richman
ceb814aa64 Revert "Change all ocurrences of '$runtimeType#$hashCode' to use the idAndType method. (#10871)" (#10880)
This reverts commit d46e208b98d4af93d7029c3e806d443dd51fd116.
2017-06-20 22:14:59 -07:00
Jacob Richman
d46e208b98 Change all ocurrences of '$runtimeType#$hashCode' to use the idAndType method. (#10871)
* Change all instances of '$runtimeType#$hashCode' to use the describeIdentity method.

The describeIdentity method generates a shorter description with a consistent length
consisting of the runtime type and the a 5 hex character long truncated
version of the hash code.
2017-06-20 18:13:28 -07:00
Ian Hickson
6d32b33997 Text selection handles track scrolled text fields (#10805)
Introduce CompositedTransformTarget and CompositedTransformFollower
widgets, corresponding render objects, and corresponding layers.

Adjust the way text fields work to use this.

Various changes I needed to debug the issues that came up.
2017-06-20 09:35:15 -07:00
Hans Muller
dbaf12b8ad Do not read or write state if PageStorageKeys cannot be found (#10612) 2017-06-12 11:24:09 -07:00
Hans Muller
0e4dda7736 Improved support for saving and restoring the scroll offset, etc V2 (#10590) 2017-06-08 17:20:36 -07:00
Alexandre Ardhuin
1eaefe1837 more const for immutables (#10563) 2017-06-08 22:04:18 +02:00
Ian Hickson
6ccc618abd Revert "Improved support for saving and restoring the scroll offset, etc (#10517)" (#10575)
This reverts commit c8e4cbf27d58bec1342d0287f389926fa0e9d9a6.
2017-06-07 18:51:28 -07:00
Alexandre Ardhuin
7d71326363 apply prefer_asserts_in_initializer_list lint (#10540) 2017-06-07 21:39:47 +02:00
Hans Muller
c8e4cbf27d Improved support for saving and restoring the scroll offset, etc (#10517) 2017-06-06 12:11:21 -07:00
Ian Hickson
6f824bcec9 More documentation (#10519) 2017-06-05 22:44:49 -07:00
P.Y. Laligand
4b7e3494dd Add drag completion callback to Draggable. (#10455)
Fixes #10350
2017-06-05 16:38:33 -07:00
Michael Goderbauer
104725f384 Adds a widgets that blocks all semantics of widgets below it in paint order within the same container (#10425) 2017-06-02 18:14:27 -07:00
Jason Simmons
07275405f8 Apply the paint offset to the bounds rectangle for shader masks (#10458)
Fixes https://github.com/flutter/flutter/issues/10424
2017-06-02 16:09:51 -07:00
Rafal Wachol
457554beaf Added test for box decoration hit (#10438) 2017-06-01 14:47:40 -07:00
Jason Simmons
0e97637299 Implement a pushRoute service to satisfy the FlutterView.pushRoute API (#10415)
Fixes https://github.com/flutter/flutter/issues/10399
2017-06-01 11:26:54 -07:00
Michael Goderbauer
87c5b24e87 Exclude ModalBarrier from Semantics Tree if it is not dismissible (#10395) 2017-05-30 16:45:54 -07:00
Jacob Richman
56a556e69f Add more tests of toStringDeep. (#10346)
* Add more tests of toStringDeep.

These tests will help ensure toStringDeep behavior is not regressed
by refactoring toStringDeep to support structured data.
2017-05-26 12:42:29 -07:00
Chris Bracken
9452a3448c Support inactive, suspending AppLifecycleStates (#10306)
* Rolls the engine to 75c74dc463d56e17be10315cfde409010fd8f90b.
* Adds framework support for the `AppLifecycleState.inactive` and `AppLifecycleState.suspending` states.

What are the new states?
------------------------
* `AppLifecycleState.inactive` is emitted on iOS only and corresponds to iOS's foreground inactive state. Current iOS state transitions are:
`resumed` <--> `inactive` <--> `paused`

* `AppLifecycleState.suspending` is currently emitted on Android only and corresponds to the
transition to Android's stopped state. Current Android state transitions are:
`resumed` <--> `paused` --> `suspending` --> `resumed`

These transitions may change in future.

This is a breaking change on iOS
--------------------------------

This changes the semantics of the `AppLifecycleState.paused` state on
iOS. The behaviour associated with this state is unchanged on Android.

For background on iOS application states see the state transition
diagram in the [App Programming Guide for iOS](https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/TheAppLifeCycle/TheAppLifeCycle.html#//apple_ref/doc/uid/TP40007072-CH2-SW6).

On iOS, prior to this change, `AppLifecycleState.paused` corresponded to
a transition to the _foreground inactive_ state. It now corresponds to a
transition to the _background state_. The newly-added
`AppLifecycleState.inactive` state now corresponds to entering the
_foreground inactive_ state, which (currently) has no exact analogue on
Android.

Briefly, the _foreground inactive_ state is the state entered when
switching from an app to the app switcher, receiving a phone call, or
responding to a TouchID request. Apps are permitted to continue
animating/updating views in this state if desired. From the _foreground
inactive_ state, the app may transition back to _active_ (e.g., entering
the app switcher then resuming the app), or to the _background_ state
(e.g., switching to the home screen or another app).

What to change
--------------
If your app does not handle the `AppLifecycleState.paused` state in a
`WidgetsBindingObserver.didChangeAppLifecycleState` implementation, no
changes are required.

If you do handle `AppLifecycleState.paused`, you may additionally wish
to also handle `AppLifecycleState.inactive`. For example, games should
probably pause on entering the app switcher rather than wait to be
backgrounded.

More details
------------
For background on Android application states see the state transition
diagram in the [Android Activity Lifecycle docs](https://developer.android.com/guide/components/activities/activity-lifecycle.html#alc).
2017-05-25 10:52:21 -07:00
Chris Bracken
7566f73d0d Simplify MemoryPressureObserver test (#10308) 2017-05-24 18:18:53 -07:00
Hans Muller
0cadbce490 Added Navigator.removeRoute() (#10298) 2017-05-24 15:16:03 -07:00
xster
40b67bb187 Move icons stuff from material to widget (#10192)
Moved everything icons related except the material icon button and the materialicon font list to widget
2017-05-21 16:57:31 -07:00
Ian Hickson
cd6e3b1ac2 CheckboxListTile, RadioListTile, SwitchListTile (#10160) 2017-05-19 08:46:17 -07:00
Collin Jackson
04923d330a Merge branch 'alpha' 2017-05-18 18:11:49 -07:00
Collin Jackson
973304d5fb Fix sliver padding assertion failure that sometimes happens during startup because the app is temporarily built with zero size 2017-05-18 17:58:24 -07:00
Ian Hickson
8b5ece7ca9 Report semantics geometry in physical units. (#10094)
Previously we used logical pixels. This made the accessibility metrics
tiny on modern devices, since the OS works in physical units.

Also add a bit more debugging info and some docs.
2017-05-16 16:43:22 -07:00
Adam Barth
20cc29cd62 Propagate notifications when onNotification returns null (#10081)
Previously we threw an exception to require a non-null value. Now we
just treat null as the common case of not stopping propagation.
2017-05-16 15:11:11 -07:00
Ian Hickson
63cfe1e30d Add strokeWidth to the paints matcher (#10121) 2017-05-16 14:17:41 -07:00
Hans Muller
765e5d5b5b Added SliverPrototypeExtentList et al (#10097) 2017-05-16 11:56:55 -07:00
Adam Barth
4b7a1912ee Add NavigatorState.pushAndRemoveUntil (#10026)
Fixes #9989
2017-05-12 17:45:17 -07:00