Commit e73d4061 authored by Pascal Welsch's avatar Pascal Welsch Committed by Ian Hickson

Reenable fade transition for Material page transition (#13048)

Fixes #12877 by reverting #9472
parent 3dc32873
...@@ -24,9 +24,14 @@ class _MountainViewPageTransition extends StatelessWidget { ...@@ -24,9 +24,14 @@ class _MountainViewPageTransition extends StatelessWidget {
parent: routeAnimation, // The route's linear 0.0 - 1.0 animation. parent: routeAnimation, // The route's linear 0.0 - 1.0 animation.
curve: Curves.fastOutSlowIn, curve: Curves.fastOutSlowIn,
)), )),
_opacityAnimation = new CurvedAnimation(
parent: routeAnimation,
curve: Curves.easeIn, // Eyeballed from other Material apps.
),
super(key: key); super(key: key);
final Animation<Offset> _positionAnimation; final Animation<Offset> _positionAnimation;
final Animation<double> _opacityAnimation;
final Widget child; final Widget child;
@override @override
...@@ -34,7 +39,10 @@ class _MountainViewPageTransition extends StatelessWidget { ...@@ -34,7 +39,10 @@ class _MountainViewPageTransition extends StatelessWidget {
// TODO(ianh): tell the transform to be un-transformed for hit testing // TODO(ianh): tell the transform to be un-transformed for hit testing
return new SlideTransition( return new SlideTransition(
position: _positionAnimation, position: _positionAnimation,
child: child, child: new FadeTransition(
opacity: _opacityAnimation,
child: child,
),
); );
} }
} }
......
...@@ -28,6 +28,8 @@ void main() { ...@@ -28,6 +28,8 @@ void main() {
await tester.pump(); await tester.pump();
await tester.pump(const Duration(milliseconds: 1)); await tester.pump(const Duration(milliseconds: 1));
Opacity widget2Opacity =
tester.element(find.text('Page 2')).ancestorWidgetOfExactType(Opacity);
Offset widget2TopLeft = tester.getTopLeft(find.text('Page 2')); Offset widget2TopLeft = tester.getTopLeft(find.text('Page 2'));
final Size widget2Size = tester.getSize(find.text('Page 2')); final Size widget2Size = tester.getSize(find.text('Page 2'));
...@@ -35,8 +37,10 @@ void main() { ...@@ -35,8 +37,10 @@ void main() {
expect(widget1TopLeft.dx == widget2TopLeft.dx, true); expect(widget1TopLeft.dx == widget2TopLeft.dx, true);
// Page 1 is above page 2 mid-transition. // Page 1 is above page 2 mid-transition.
expect(widget1TopLeft.dy < widget2TopLeft.dy, true); expect(widget1TopLeft.dy < widget2TopLeft.dy, true);
// Animation begins from the top of the page. // Animation begins 3/4 of the way up the page.
expect(widget2TopLeft.dy < widget2Size.height, true); expect(widget2TopLeft.dy < widget2Size.height / 4.0, true);
// Animation starts with page 2 being near transparent.
expect(widget2Opacity.opacity < 0.01, true);
await tester.pump(const Duration(milliseconds: 300)); await tester.pump(const Duration(milliseconds: 300));
...@@ -48,10 +52,14 @@ void main() { ...@@ -48,10 +52,14 @@ void main() {
await tester.pump(); await tester.pump();
await tester.pump(const Duration(milliseconds: 1)); await tester.pump(const Duration(milliseconds: 1));
widget2Opacity =
tester.element(find.text('Page 2')).ancestorWidgetOfExactType(Opacity);
widget2TopLeft = tester.getTopLeft(find.text('Page 2')); widget2TopLeft = tester.getTopLeft(find.text('Page 2'));
// Page 2 starts to move down. // Page 2 starts to move down.
expect(widget1TopLeft.dy < widget2TopLeft.dy, true); expect(widget1TopLeft.dy < widget2TopLeft.dy, true);
// Page 2 starts to lose opacity.
expect(widget2Opacity.opacity < 1.0, true);
await tester.pump(const Duration(milliseconds: 300)); await tester.pump(const Duration(milliseconds: 300));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment