Each layer is supposed to reexport the parts of the previous layer
that are part of its API.
- In painting.dart, export from dart:ui all the Canvas-related APIs
that make sense to be used at higher levels, e.g. PaintingStyle.
- Delete painting/shadows.dart. It was dead code.
- In rendering/object.dart, export all of painting.dart.
- In widgets/basic.dart, export all of painting.dart and
animation.dart. Some classes in animation/ are renamed to make this
less disruptive and confusing to the namespace.
- Split out Stocks back into an import model rather than a part model,
so that it's easier to manage its dependencies on a per-file basis.
- Move Ticker to scheduler library.
- Remove as many redundant imports as possible now.
- Some minor nit picking cleanup in various files.
This patch also changed ScrollableList2 to use an Iterable instead of an
List for its children. This change lets clients map their underlying
data lazily. If the clients actually have a concrete list, we skip the
extra copy and grab the child list directly.
Heroes with the same tag have to have keys that are unique across the
entire subtree. Since we can now show both stock lists, this means we
have to include the tab in the heroes' keys.
Fixes#668.
Identify specific parts of a Stock row with a Global Key that can be
regenerated later, and pass that key back to event handlers so they can
use them to do the transition.
Make it possible for named routes to be generated on the fly.
To demonstrate this, you can now long-press a stock to open it.
Next steps:
- transitions between (named) states that follow full material logic,
e.g. in the case of the stock row to stock page transition, expanding
the row into a raised sheet of material and expanding it to fit the
screen, leaving the toolbar in place but cross-fading the old
contents to the new contents.
- more information in the stock view.
While I was here I also made Material have an opinion about default text
style, so if you forget to set one, it just uses body1.
Also, fixed bugs introduced recently that made RouteState and MenuRoute
not work properly.
- PageableList extends ScrollableList
One fixed width or height item is visible and centered at a
time. Fling and drag gestures scroll to the next/previous item.
- Scrollable.scrollTo(), Scrollable.scrollBy(), ensureWidgetIsVisible() API changed
The named animation parameter for these methods was replaced by
duration and curve. All of the methods now return a Future. The Future
completes when the scroll does.
This change eliminates the need for Scrollable to temporarily take ownership
of a ValueAnimation object (see #645).
- Using Future.then() instead of an AnimationPerformance status listener
In ensure_visible.dart _handleTap() uses ensureWidgetIsVisible() to
center the card roughly as before and then. When the implicit scroll
animation is complete, it changes the centered card's label font. The
change is made when the Future returned by ensureWidgetIsVisible()
completes.
- FixedHeightScrollable's itemHeight parameter is now itemExtent
If scrollDirection is ScrollDirection.vertical (the default) then itemExtent should
be the height of each item; otherwise it should be the width of each item.
Replaced _velocityForFlingGesture() in scrollable.dart with Scrollable._eventVelocity()
The original version clamped pixels/ms against pixels/sec constants. The new version
also deals with scrollDirection.
- Plumbed scrollDirection though FixedHeightScrollable and ScrollableList
Both classes should now support horizontal scrolling.
- make the ScrollBehavior instance long-lived, rather than recreating
it each time we update the list contents.
- have OverscrollBehavior track the total height of the contents and
the height of the scrollable region, so that it can determine when
to stop scrolling down.
- teach OverscrollBehavior about how to determine when to stop
scrolling down, and how to bounce when it's too far down.
- replace the 'energy' concept in Particles with a method that sets
the energy and direction at the same time, instead of assuming that
the direction is always positive when setting energy.
- make FixedHeightScrollable lists track the number of items in the
list and have them update their ScrollBehavior regarding this
information as it changes.
- track how many items are currently showing in the list stock list.
R=eseidel@chromium.org
Review URL: https://codereview.chromium.org/1097373002
Currently, if you then scroll down N items with a filter set, we select which
stock to show by taking the entire list of stocks, skipping the first N, then
filtering the list, then selecting as many stocks as needed to fill the list.
So suppose the list is A, B, Cx, Dx, Ex, F, and the filter is "x", and you've
scrolled down 1 item.
Currently we'd show Cx, Dx, Ex.
Scroll down 1 again.
We still show Cx, Dx, Ex.
What we _should_ show is Dx, Ex if you've scrolled down 1, and just Ex if you've
scrolled two.
This patch fixes this. We now skip rows _after_ filtering. This fixes
the bug whereby if you set a filter then fling the list, we show the
same item over and over as if in a loop.
R=eseidel@chromium.org
Review URL: https://codereview.chromium.org/1057603006