190 Commits

Author SHA1 Message Date
Hixie
6c7fcefe11 Enable Positioned to be animated.
Add a AnimatedRelativeRectValue class for animating RelativeRects.

Add a PositionedTransition class for animating Positioned using
AnimatedRelativeRectValues.

Add a test for PositionedTransition.

Fix a math bug a RelativeRect found by the test.

Fix a logic bug in the two ParentDataWidget classes found by the test.
Specifically, they were marking the child dirty, rather than the parent.
The parentData is for the parent's layout, not the child's, so they have
to mark the parent dirty. (I didn't hoist this up to the superclass
because ParentData could be used for painting, hit testing,
accessibility, or any number of other things, and I didn't want to bake
in the assumption that it needed markNeedsLayout.)
2015-10-17 19:06:42 -07:00
Hixie
a4acd46ba4 Sundry debugging aids and fixes
(These are all the debugging-related fixes and trivial typo fixes that I
extracted out of my heroes branch.)

Fix rendering.dart import order.

Introduce a debugLabel for Performances so that when you create a
performance, you can tag it so that if later you print it out, you can
figure out which performance it is.

Allow the progress of a PerformanceView to be determined (but not set).

Allow subclasses of PerformanceView that are constants to be created by
defining a constant constructor for PerformanceView.

Introduce a debugPrint() method that throttles its output. This is a
test to see if it resolves the problems people have been having with
debugDumpRenderTree() et al having their output corrupted on Android. It
turns out (according to some things I read On The Internets) that
Android only has a 64KB kernel buffer for its logs and and if you output
to it too fast, it'll drop data on the floor. If this does in fact
reliably resolve this problem, we should probably move the fix over to
C++ land (where "print" is implemented) so that any use of print is
handled (avoiding the interleaving problem we have now if you use both
debugPrint() and print()).

Fix a bug with the debugging code for "size". In the specific case of a
RenderBox having a parent that doesn't set parentUsesSize, then later
the parent setting parentUsesSize but the child having its layout
short-circuited (e.g. because the constraints didn't change), we didn't
update the _DebugSize object to know that now it's ok that the size be
used by the parent, and we'd assert.

Also, allow a _DebugSize to be used to set the size of yourself.
Previously you could only set your size from a regular Size or from your
child's _DebugSize.

Add more debugging information to various Widgets where it might be
helpful.

Make GlobalKey's toString() include the runtimeType so that when
subclassing it the new class doesn't claim to be a GlobalKey instance.

Include the Widget's key in the Element's description since we don't
include it in the detailed description normally (it's in the name part).

Fix a test that was returning null from a route.
2015-10-16 16:41:56 -07:00
Hans Muller
58c929003e Fix scollable tabs, add basic unit test 2015-10-16 15:10:26 -07:00
krisgiesing
fb6143da0f Merge pull request #1617 from krisgiesing/arena_sweep
Arena sweep
2015-10-15 13:08:34 -07:00
Jason Simmons
94fa673029 Fix warnings seen when running skyanalyzer in strong mode 2015-10-15 10:56:03 -07:00
Jason Simmons
ee5cc63143 Merge pull request #1615 from jason-simmons/edit_text_action_button_2
Implement better synchronization between the state of the input widget and the keyboard IME
2015-10-14 17:36:33 -07:00
Kris Giesing
5766e68063 Add release semantics, add test 2015-10-14 17:03:26 -07:00
Hixie
04ddf92909 Transform alignment
For those times where you want to spin something around a point relative
to the size of your box, but you don't know the size of your box.
2015-10-14 15:30:56 -07:00
Jason Simmons
ab9de69856 Implement better synchronization between the state of the input widget and the keyboard IME
Also add an input widget API for the keyboard submit button
2015-10-14 15:19:46 -07:00
Kris Giesing
f50b00ff14 Address more comments 2015-10-13 17:32:04 -07:00
Kris Giesing
76963678d3 Address comments 2015-10-13 16:57:40 -07:00
Kris Giesing
29dfecd803 Add dart-layer input event abstraction 2015-10-13 15:16:04 -07:00
Hixie
9f174def11 Lots of trivial warning fixes
Add type annotations in many places.
Fix some identifiers to have more lint-satisfying names.
Make all operator==s consistent in style.
Reorder some functions for consistency.
Make ParentData no longer dynamic, and fix all the code around that.
2015-10-12 16:31:20 -07:00
Adam Barth
9f736f197b Reattach fitness to the build
We can build Fitness again now that playfair has been updated to account for
the package:flutter rename.
2015-10-12 00:24:24 -07:00
Adam Barth
4d0b7911a0 Import dart:ui as ui (instead of as sky) 2015-10-09 20:55:54 -07:00
Adam Barth
dca1370bc6 Rename package:sky to package:flutter 2015-10-09 20:44:52 -07:00
Adam Barth
72c103cefa Rename dart:sky to dart:ui 2015-10-09 19:27:13 -07:00
Adam Barth
6483ebeecc Rename App to MaterialApp
MaterialApp assumes that you're using material design.

Also move radial reaction and fix imports for stats box.
2015-10-09 10:27:22 -07:00
Adam Barth
3b06c85c6d Split material design widgets out of widgets.dart
These are now part of material.dart.
2015-10-09 10:07:06 -07:00
Hixie
caea42b426 Drawer test. 2015-10-08 12:17:53 -07:00
Hans Muller
101d4f9e7e Allow Stacks with no children or only poisitioned children 2015-10-08 11:09:41 -07:00
Adam Barth
2510e31602 Merge pull request #1538 from abarth/fix_snackbar
SnackBar throws exception on creation
2015-10-08 10:27:58 -07:00
Hans Muller
2271340920 IndexedStack
Added horizontal and vertical alignment properties to Stack so that the origin of non-positioned children can be specified. Currently all of the non-positioned children just end up with their top-left at 0,0. Now, for example, you can center the children by specifying verticalAlignment: 0.5, horizontalAlignment: 0.5.

Added IndexedStack which only paints the stack child specified by the index property. Since it's a Stack, it's as big as the biggest non-positioned child. This component will be essential for building mobile drop down menus.

Added a (likely temporary) example that demonstrates IndexedStack.
2015-10-08 10:21:24 -07:00
Adam Barth
8547676089 SnackBar throws exception on creation
It was trying to grab the route's performance before it was created. Now we
create the performance eagerly again.
2015-10-08 10:17:19 -07:00
Adam Barth
8bf3b35c2f Re-enable passing tests 2015-10-07 20:12:39 -07:00
Hixie
9f2429550c Fix Focus
Focus.at() and company should be on Focus, not FocusState.

_notifyDescendants() was using the wrong runtimeType.

Let InheritedWidget update the descendants during build.

When you setState() during build, assert that you're not
markNeedsBuild()ing someone who isn't a descendant.

Typo in Widget.toString().
2015-10-05 16:41:50 -07:00
Hixie
3467f32a1f Simplify the usage of Navigator's routes argument
(These are changes cherry-picked from in-flight branches since they are
more independent and could be helpful even without those changes.)

- Change RouteBuilder's signature to take a single argument in which the
  other fields are placed, so that we can keep iterating on those
  arguments without having to break compatibility each time. Also, this
  makes defining route builders much simpler (only one argument to
  ignore rather than a variable number).

- Expose the next performance to RouteBuilders, since sometimes the
  route itself might not be where it's used.

- Allow BuildContext to be used to walk children, just like it can for
  ancestors

- Allow BuildContext to be used to get the Widget of the current
  BuildContext

- Allow StatefulComponentElement to be referenced with a type
  specialisation so that you don't have to cast when you know what the
  type you're dealing with actually is.
2015-10-05 13:59:30 -07:00
Adam Barth
75d4ee7eb6 Switch scheduler over to Duration
This patch prepares us to switch to using integers when handing off the
animation time from the engine to the framework.
2015-10-03 13:48:57 -07:00
Adam Barth
36c4e6e1fc Merge pull request #1458 from Hixie/dismiss-1215
Regression test for #1215
2015-10-02 23:05:57 -07:00
Hans Muller
c985ed6739 ShaderMask
The ShaderMask widget enables rendering its child with an alpha channel defined by a Shader. For example if the Shader was a linear gradient in alpha then the component behind the ShaderMask's child would appear wherever the gradient's alpha value was not fully opaque.

The card_collection.dart example demonstrates this. Select the "Let the sun shine" checkbox in the app's drawer.
2015-10-02 17:08:00 -07:00
Adam Barth
5fb5f1cdda Merge pull request #1463 from abarth/animated_container
Add AnimatedContainer
2015-10-02 16:34:32 -07:00
Adam Barth
1ba0fcf864 Add AnimatedContainer
This widget is used in Material and Drawer. We don't currently support
animating towards null, but we can add that in a future patch.
2015-10-02 15:53:12 -07:00
Adam Barth
8697a27c1a Detecting just Pan events causes an exception in GestureDetector
Fixes #1320
2015-10-02 15:36:41 -07:00
Hixie
4a748f3a27 Regression test for #1215
I'm not sure this specific incarnation of the test ever crashed, since
the original test depended on user interaction and now works fine, but
just in case, here's a regression test for it so I can close that issue.

This also slightly changes the Widget.toString() output to include the
key since that will make debugging easier.
2015-10-02 11:22:16 -07:00
Hixie
e41c4ce807 Default RenderBox.size to null. 2015-10-02 10:31:14 -07:00
Adam Barth
9ca76ed463 Merge pull request #1447 from abarth/reactivate
GlobalKeys should preserve state across tree mutations
2015-10-01 17:13:16 -07:00
Adam Barth
be47876e93 GlobalKeys should preserve state across tree mutations
This patch causes widgets with global keys to drag their state (including their
children) with them as they travel through the element tree.
2015-10-01 17:08:05 -07:00
Hixie
d43e274247 FractionallySizedBox 2015-10-01 15:41:14 -07:00
Adam Barth
55481ed387 Merge pull request #1444 from abarth/float64
Moves from vector_math to vector_math_64
2015-10-01 15:37:20 -07:00
Hixie
3e0c6d586e EdgeDims changes and other fixes to core classes.
- Rename EdgeDims constructor to EdgeDims.TRBL().

- Add operator== to Size and Offset so that you can compare Size to
  DebugSize in checked mode.

- Add Size.lerp().

- Add various operators to EdgeDims. (*, /, ~/, %)

- Add EdgeDims.lerp().

- Update style guide. I went there to fix an EdgeDims constructor
  example, and stayed because some recent things came up and I wanted to
  add them before I forgot.
2015-10-01 15:34:04 -07:00
Adam Barth
8cf43b65d2 Moves from vector_math to vector_math_64
* Moves from vector_math to vector_math_64
* Adds support for Float64List in Dart bindings
2015-10-01 14:46:13 -07:00
Adam Barth
1110dc28eb Integrate WidgetTester with FakeAsync
Fixes #1084
2015-10-01 10:56:58 -07:00
Adam Barth
feb70684f5 Make fn3 the default widget framework 2015-10-01 09:48:35 -07:00
Adam Barth
db8b4ae641 Consolidate widget tests
Now that we've ported all the widget tests to fn3, we don't need a separate fn3
directory.
2015-09-30 18:58:17 -07:00
Hans Muller
41926f9952 Clamp the snapped scroll simulation; Scrollable settle() and fling() return a Future 2015-09-30 16:52:17 -07:00
Adam Barth
0ac1af8f69 Merge pull request #1411 from abarth/port_input_test
Port input_test to fn3
2015-09-30 16:00:52 -07:00
Adam Barth
eb144186ac Merge pull request #1418 from abarth/dimissable_test
Port dimissable_test.dart to fn3
2015-09-30 15:18:19 -07:00
Adam Barth
00687685b8 Port dimissable_test.dart to fn3 2015-09-30 15:03:32 -07:00
Hans Muller
b77990cc2e Snap scrolling: additional tests, cleanup 2015-09-30 14:13:11 -07:00
Adam Barth
5f80bf2c5b Port input_test to fn3 2015-09-30 13:25:46 -07:00