237 Commits

Author SHA1 Message Date
Ian Hickson
596eb033c7 Loosen the constraints for Stack non-positioned children. (#9581)
Also:

 * Add three explicit sizing modes to Stack for non-positioned
   children: loose, expand, and passthrough. (All three are used.)

 * Fix a bug whereby layers would try to paint in the same frame as
   they were removed from layout (but not detached).

 * Fix a bug whereby Offstage wasn't properly marking the parent dirty
   when changing its sizedByParent flag.

 * Explicitly make Overlay expand non-positioned children.

 * Explicitly have InputDecoration pass through the constraints from
   its Row to its Stack children.
2017-04-25 15:06:02 -07:00
Adam Barth
55f334681b FocusNode.requestFocus should show the keyboard (#9558)
This patch introduces the notion of a keyboard token, which generalizes the
logic in EditableText for distinguishing between gaining focus by default and
gaining focus because of an explicit use action.

Fixes #7985
2017-04-24 09:46:49 -07:00
Alexandre Ardhuin
83fce211a3 More const immutable classes (#9544)
* more widget const constructors

* prefer const constructors

* address review comments
2017-04-23 22:37:29 +02:00
xster
76ecb0b9a1 Remove InputField (#9520) 2017-04-21 14:12:14 -07:00
Alexandre Ardhuin
9541848272 make @immutable const classes (#9532)
* make @immutable const

* fix build
2017-04-21 23:09:42 +02:00
Alexandre Ardhuin
c794221f96 enable lint prefer_adjacent_string_concatenation (#9493) 2017-04-21 08:52:07 +02:00
Alexandre Ardhuin
03c54abd5f make some widgets const (#9477) 2017-04-20 08:59:05 +02:00
Chinmay Garde
9b90ec4846 Remove FadeTransition from _MountainViewFadeTransition. (#9472)
* Remove FadeTransition from _MountainViewFadeTransition.
* Update tests.
2017-04-19 15:12:40 -07:00
Adam Barth
7be9115a43 Deploy @immutable in more places (#9462)
Turns out we have many immutable classes.

Fixes #6892
2017-04-19 09:30:43 -07:00
Hans Muller
1e4151691a Fix PageSelector, page selector gallery demo (#9448) 2017-04-18 14:15:32 -07:00
Hans Muller
4906297c28 Scrollable TabBar shows initialIndex (#9402) 2017-04-18 13:11:35 -07:00
xster
8ed175411b Make Cupertino page transition elevation animated too (#9166)
* Make Cupertino page transition elevation animated too

* Rename and change physical model to a decorated box

* Tests

* Add a comment

* still need to handle null in the tween somewhere

* nits

* Tweens evaluate to the actual begin/end instances. Let them be non-null

* Rename no decoration to none
2017-04-18 11:27:21 -07:00
Hans Muller
80a8c5629e WidgetTester enterText() and showKeyboard() can specify an EditableText ancestor (#9398) 2017-04-14 15:41:30 -07:00
Hans Muller
dbfa747b37 TabBarView scroll handling should factor in scroll physics tolerance (#9390) 2017-04-14 15:23:47 -07:00
Hans Muller
c96201a3c9 Scaffold appBar is-a PreferredSizeWidget, etc (#9380)
* Scaffold appBar is-a PreferredSizeWidget, etc

* Updated

* Updated per review feedback
2017-04-13 13:04:51 -07:00
Chris Bracken
81fa81cd32 Add TextEditingValue update test coverage (#9381)
Tests that updates to selection base/offset editing state is updated on
controller updates.

Tests TextEditingValue.clear() clears text.
2017-04-13 12:13:30 -07:00
Ian Hickson
8fdd2066b3 DefaultTextStyle.merge and IconTheme.merge improvements (#9358)
I can't figure out if this is genius or a giant hack.

This lets you use DefaultTextStyle.merge and IconTheme.merge without
specifying a BuildContext. It automatically merges in at the
appropriate place in the tree using a Builder widget.
2017-04-13 10:26:40 -07:00
Hans Muller
9f34e2e4c2 Point to Offset (#9355) 2017-04-12 15:54:50 -07:00
Hans Muller
28bb89c6f6 Support for snapping floating app bars (#9156) 2017-04-12 15:15:01 -07:00
Ian Hickson
bf017b79b3 Move Point to Offset (#9277)
* Manually fix every use of Point.x and Point.y

Some of these were moved to dx/dy, but not all.

* Manually convert uses of the old gradient API

* Remove old reference to Point.

* Mechanical changes

I applied the following at the root of the Flutter repository:

git ls-files -z | xargs -0 sed -i 's/\bPoint[.]origin\b/Offset.zero/g'
git ls-files -z | xargs -0 sed -i 's/\bPoint[.]lerp\b/Offset.lerp/g'
git ls-files -z | xargs -0 sed -i 's/\bnew Point\b/new Offset/g'
git ls-files -z | xargs -0 sed -i 's/\bconst Point\b/const Offset/g'
git ls-files -z | xargs -0 sed -i 's/\bstatic Point /static Offset /g'
git ls-files -z | xargs -0 sed -i 's/\bfinal Point /final Offset /g'
git ls-files -z | xargs -0 sed -i 's/^\( *\)Point /\1Offset /g'
git ls-files -z | xargs -0 sed -i 's/ui[.]Point\b/ui.Offset/g'
git ls-files -z | xargs -0 sed -i 's/(Point\b/(Offset/g'
git ls-files -z | xargs -0 sed -i 's/\([[{,]\) Point\b/\1 Offset/g'
git ls-files -z | xargs -0 sed -i 's/@required Point\b/@required Offset/g'
git ls-files -z | xargs -0 sed -i 's/<Point>/<Offset>/g'
git ls-files -z | xargs -0 sed -i 's/[.]toOffset()//g'
git ls-files -z | xargs -0 sed -i 's/[.]toPoint()//g'
git ls-files -z | xargs -0 sed -i 's/\bshow Point, /show /g'
git ls-files -z | xargs -0 sed -i 's/\bshow Point;/show Offset;/g'

* Mechanical changes - dartdocs

I applied the following at the root of the Flutter repository:

git ls-files -z | xargs -0 sed -i 's/\ba \[Point\]/an [Offset]/g'
git ls-files -z | xargs -0 sed -i 's/\[Point\]/[Offset]/g'

* Further improvements and a test

* Fix minor errors from rebasing...

* Roll engine
2017-04-12 15:06:12 -07:00
Ian Hickson
2a54524337 Fix tests to use Ahem, and helpful changes around that (#9332)
* Fix tests to use Ahem, and helpful changes around that

- Fix fonts that had metric-specific behaviours.

- LiveTestWidgetsFlutterBinding.allowAllFrames has been renamed
  to LiveTestWidgetsFlutterBinding.framePolicy.

- LiveTestWidgetsFlutterBinding now defaults to using a frame policy
  that pumps slightly more frames, to animate the pointer crosshairs.

- Added "flutter run --use-test-fonts" to enable Ahem on devices.

- Changed how idle() works to be more effective in live mode.

- Display the test name in live mode (unless ahem fonts are enabled).

- Added a toString to TextSelectionPoint.

- Style nit fixes.

* Roll engine to get Ahem changes.

* Update tests for dartdoc changes.

* Fix flutter_tools tests
2017-04-12 13:33:02 -07:00
xster
89a7fdfc56 Rename State.config to widget everywhere (#9273)
Rename State.config to State.widget
Rename State.didUpdateConfig to State.didUpdateWidget
Renamed all State subclasses' local variables named config to something else
2017-04-10 18:32:24 -07:00
xster
4f258357c9 Fix lints (#9307) 2017-04-10 02:09:51 -07:00
xster
7ce1cfd48d AppBar automatically show a close button for dialogs (#9268)
* Wiring fullscreen dialog

* Make fullscreen dialog use the new API. Add tests

* Review notes

* Move field back up

* final
2017-04-10 01:05:25 -07:00
Ian Hickson
3eb87830e9 Constants! Constants everywhere! (#9286)
Aggressively apply the const lint.
2017-04-07 12:24:32 -07:00
Chris Bracken
ecc590f958 Eliminate WidgetTester.idle() after enterText() (#9290)
enterText() now includes a call to idle().
2017-04-07 11:42:22 -07:00
Chris Bracken
a7a95daa52 Update TextEditingValue.selection on selection change (#9284)
Fixes a bug where tapping in the text under edit moved the cursor but
did not push the updated selection to the engine.

Adds a test for caret position updates.
2017-04-07 11:13:10 -07:00
Adam Barth
470db7d96e TextField should update IME when controller changes (#9261)
Fixes #9246
2017-04-06 12:28:30 -07:00
Ian Hickson
2144a8964f Fill in the test for button color splash and highlights (#9224)
Fixes https://github.com/flutter/flutter/pull/8643

Fixes https://github.com/flutter/flutter/issues/8804 by adding a test
to verify that Material elevation changes animate.

Also tweak some dartdocs, add some trailing commas, improve some
toString output, make the inkwell test agnostic to the PhysicalModel
logic, and move the material buttons test to the material test
directory.
2017-04-05 22:46:58 -07:00
Ian Hickson
8469ef03d8 Trivial tabs-related fixes (#9191)
Add some commentary around DefaultTabController.initialIndex.
Fix typo (nuull) in TabBar.
Make some asserts more detailed.
2017-04-04 20:38:29 -07:00
Ian Hickson
d98daa6e10 Minor cleanup to tests. (#9197) 2017-04-04 17:21:22 -07:00
Jason Simmons
d302213270 Gate the PhysicalModel shadows behind a flag (#9198)
Fixes https://github.com/flutter/flutter/issues/9186
2017-04-04 16:42:48 -07:00
Jason Simmons
3000c8bb59 Distinguish canceling a route pop from bubbling the pop up to the next level (#9165) 2017-04-04 16:42:31 -07:00
xster
0cf2f88f00 Make Cupertino page transition linear during drag (#9167)
* Just realized the creation order is the other way around

* Works

* Revert previous partial solution

* Change pumpAndSettle to pump for gestures
2017-04-04 11:17:40 -07:00
Adam Barth
0d402242c5 Test that MaterialApp can be inside a FocusScope (#9141)
The underlying issue was fixed by the new focus system.

Fixes #1523
2017-04-03 22:50:30 -07:00
Adam Barth
20015400f9 TextField centering should work in loose constraints (#9153)
We should always use the maxWidth from the incomming constraints to size the
text inside the editable because the EditableText itself always expands to fill
its width.

Also, make sure InputDecoration always expands horizontially (even when there's
no icon) for consistency.

Fixes #9149
2017-04-03 20:48:54 -07:00
Hans Muller
bb5351b7c2 AppBar looks up its scaffold with nullOk: true (#9160) 2017-04-03 15:27:37 -07:00
xster
58ddde88f4 Make Cupertino page transitions match native behaviours (#9138)
* Moved stuff around yet

* Fix depedencies

* Add more dartdoc comments to packages

* Remove Cupertino dependency on material

* Removed mountain_view package and added page transition test

* Fix analyze warnings

* Remove commented code

* Partial solution. Still need to stop the animation on the previous page for modal

* Some review notes

* Move the cupertino back gesture controller’s lifecycle management back to its parent

* Reviews

* Add background color

* Directional curves, full screen transition

* Don’t perform the exit animation if the incoming page is a dialog

* It works!

* Test structures

* Add a bunch of more tests and fix the gallery

* One more comment

* Review notes

* final controller

* Use that sweet sweet `is!` keyword

* Play golf, because I’m bitter that there’s no nullable `as` or something in dart

* Remove a space

* Review notes

* Remove the last deprecated test
2017-04-03 12:44:43 -07:00
xster
c7f98efb63 Extract cupertino page transition out of material (#9059)
* Moved stuff around yet

* Fix depedencies

* Add more dartdoc comments to packages

* Remove Cupertino dependency on material

* Removed mountain_view package and added page transition test

* Fix analyze warnings

* Remove commented code

* Some review notes

* Move the cupertino back gesture controller’s lifecycle management back to its parent

* Reviews

* Add background color

* final controller

* Review notes
2017-04-03 12:17:39 -07:00
Adam Barth
0b31c69963 Make it possible to center the text in a TextField (#9140)
Also, fix an issue where hint text wasn't visible when the
InputDecoration was collapsed.

Fixes #8541
2017-04-01 23:11:18 -07:00
Ian Hickson
9be0fc7422 Fill in the test for rounded rectangle splash and highlights (#9092)
Fixes https://github.com/flutter/flutter/issues/9031

Also some updates to mock_canvas that were needed to do this.
2017-04-01 17:47:18 -07:00
Adam Barth
ae8994860e Rationalize text input widgets (#9119)
After this patch, there are three major text input widgets:

 * EditableText. This widget is a low-level editing control that
   interacts with the IME and displays a blinking cursor.

 * TextField. This widget is a Material Design text field, with all the
   bells and whistles. It is highly configurable and can be reduced down
   to a fairly simple control by setting its `decoration` property to
   null.

 * TextFormField. This widget is a FormField that wraps a TextField.

This patch also replaces the InputValue data model for these widgets
with a Listenable TextEditingController, which is much more flexible.

Fixes #7031
2017-04-01 17:30:21 -07:00
Adam Barth
89aaaa9c32 Improve focus management (#9074)
We now have an explicit focus tree that we manage. Instead of using
GlobalKeys to manage focus, we use FocusNode and FocusScopeNode objects.
The FocusNode is Listenable and notifies when its focus state changes.

Focus notifications trigger by tree mutations are now delayed by one
frame, which is necessary to handle certain complex tree mutations. In
the common case of focus changes being triggered by user input, the
focus notificiation still arives in the same frame.
2017-03-31 13:10:37 -07:00
xster
86e9fc1c68 Add FadeTransition to Android page transition (#9086)
* Add FadeTransition to Android page transition

* Also move starting point up

* Add test

* Use const fractional offset
2017-03-30 18:46:32 -07:00
Ian Hickson
d709f18cd2 Do not swallow exceptions in guarded functions. (#9064) 2017-03-30 09:50:30 -07:00
Jason Simmons
72effdd27c Roll the engine and update for new binary names (#9089) 2017-03-29 15:31:36 -07:00
Hans Muller
26c36623b2 Added a TabBar regression test (#9038) 2017-03-27 16:31:28 -07:00
Adam Barth
dccccb9b82 Add fontFamily to ThemeData constructor (#9016)
Otherwise it's somewhat verbose to configure all the text themes.
2017-03-26 10:53:02 -07:00
Collin Jackson
0739dcea4b Fix #9003 Make DrawerHeader margin configurable (#9006) 2017-03-24 16:42:58 -07:00
Hans Muller
606f56221b Eliminated DrawerItem, use ListTile instead (#8992) 2017-03-24 15:34:43 -07:00