* globalToLocal was just broken when there was a rotation and a
translation at the same time. This fixes that and adds a test.
* update graphic used by spinning_mixed since the old one went 404.
* simplify some of the code in the demo.
* fix MatrixUtils.transformPoint to be consistent with how we transform
points elsewhere.
* stop transforming points elsewhere, just use
MatrixUtils.transformPoint.
* make the Widget binding handle not having a root element.
* make the spinning_mixed demo update its widget tree.
The code previously assumed that paint would be called before hitTest, but that
assumption isn't valid because RenderOpacity hit tests its children without
painting them.
Fixes#6089
This requires all AnimationController objects to be given a
TickerProvider, a class that can create the Ticker.
It also provides some nice mixins for people who want to have their
State provide a TickerProvider. And a schedulerTickerProvider for those
cases where you just want to see your battery burn.
Also, we now enforce destruction order for elements.
This silences an assertion that fired when reparenting a widget with a
global key inside a LayoutBuilder callback when that callback also
happened to call setState (directly or indirectly) on that widget.
Normally such setStates are considered ok since we know we haven't
cleaned that subtree yet, but we were not correctly handling the case
where the list needed resorting in that situation.
This structure for the API is hopefully less confusing that the previous one
(which implied that vertical drags would not trigger horizontally draggable
widgets).
Fixes#1987
This rewrites imports of various mojom.dart files from the Flutter
engine repo to instead import normal-looking dart files from the
(new) flutter_services package. This package handles exporting the
correct symbols from generated code wherever that may live.
Includes an engine roll to 3551e7a48e2e336777b15c7637af92fd7605b6c5
which contains the new flutter_services package.
It wasn't taking padding into account when deciding which children were
visible. I modeled the solution off of the way ScrollableList handles
this.
Fixes https://github.com/flutter/flutter/issues/5522
* Added OverscrollIndicatorEdge et al
* RefreshIndicator only clamps its scrollable edge
* added a test
* Updated the test
* fixed lint-os
* fixed a typo
* Scrollable should restore its viewport dimensions when it reappears
* removed an accidental commit
* updated per review feedback
Previously, pumpWidget() would do a partial pump (it didn't trigger
Ticker callbacks or post-frame callbacks), and pump() would do a full
pump. This patch brings them closer together. It also makes runApp run a
full actual frame, rather than skipping the transient callback part of
the frame logic. Having "half-frames" in the system was confusing and
could lead to bugs where code expecting to run before the next layout
pass didn't because a "half-frame" ran first.
Also, make Tickers start ticking in the frame that they were started in,
if they were started during a frame. This means we no longer spin a
frame for t=0, we jump straight to the first actual frame.
Other changes in this patch:
* rename WidgetsBinding._runApp to WidgetsBinding.attachRootWidget, so
that tests can use it to more accurately mock out runApp.
* allow loadStructuredData to return synchronously.
* make handleBeginFrame handle not being given a time stamp.
* make DataPipeImageProvider.loadAsync protected (rather than private),
and document it. There wasn't really a reason for it to be private.
* fix ImageConfiguration.toString.
* introduce debugPrintBuildScope and debugPrintScheduleBuildForStacks,
which can help debug problems with widgets getting marked as dirty but
not cleaned.
* make debugPrintRebuildDirtyWidgets say "Building" the first time and
"Rebuilding" the second, to make it clearer when a widget is first
created. This makes debugging widget lifecycle issues much easier.
* make debugDumpApp more resilient.
* debugPrintStack now takes a label that is printed before the stack.
* improve the banner shown for debugPrintBeginFrameBanner.
* various and sundry documentation fixes
This issue got fixed by a recent check-in, but I had a test specifically
for this incarnation so we should probably keep it just in case.
Closes https://github.com/flutter/flutter/issues/5630
Previously, if a StatefulWidget was marked dirty, then removed from the
build, then reinserted using the exact same widget under a widget under
a LayoutBuilder, it wouldn't rebuild.
This fixes that.
It also introduces an assert that's supposed to catch SizeObserver-like
behaviour. Rather than make this patch even bigger, I papered over two
pre-existing bugs which this assert uncovered (and fixed the other
problems it found):
https://github.com/flutter/flutter/issues/5751https://github.com/flutter/flutter/issues/5749
We should fix those before 1.0 though.
Fixed a bug where the size of the AnimatedCrossFade would always
start from the size of the first child, irrespective of the
initial crossFadeState argument.
1: If a route is already dismissed when it's popped, there's no point
trying to animate heroes, because it's going to be gone before the
heroes code can look at it.
2: If a hero animation finishes just as a new one is starting, we
previously blew away the state for the starting one. Now we correctly
segregate the "starting up quest" variables from the "actively ongoing
quest" variables.
The type of rejects should be List<dynamic> to match the type that
DragTarget expects. Since the function doesn't use rejects anyway,
there's no need to tighten the type.
Fixes one of the strong_mode_static_type_error errors that is currently
being ignored.