mirror of
https://github.com/flutter/packages.git
synced 2025-07-04 09:38:17 +08:00
[animations] Remove copy of curves (#182)
This commit is contained in:

committed by
GitHub

parent
987d168062
commit
837b1a321d
@ -2,13 +2,15 @@
|
|||||||
// Use of this source code is governed by a BSD-style license that can be
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart'
|
||||||
|
hide decelerateEasing; // ignore: undefined_hidden_name
|
||||||
|
// TODO(goderbauer): Remove implementation import when material properly exports the file.
|
||||||
|
import 'package:flutter/src/material/curves.dart'; // ignore: implementation_imports
|
||||||
|
|
||||||
// TODO(shihaohong): Remove DualTransitionBuilder once flutter/flutter's `stable`
|
// TODO(shihaohong): Remove DualTransitionBuilder once flutter/flutter's `stable`
|
||||||
// branch contains DualTransitionBuilder.
|
// branch contains DualTransitionBuilder.
|
||||||
import 'dual_transition_builder.dart' as dual_transition_builder;
|
import 'dual_transition_builder.dart' as dual_transition_builder;
|
||||||
import 'modal.dart';
|
import 'modal.dart';
|
||||||
import 'utils/curves.dart';
|
|
||||||
|
|
||||||
/// The modal transition configuration for a Material fade transition.
|
/// The modal transition configuration for a Material fade transition.
|
||||||
///
|
///
|
||||||
|
@ -4,13 +4,18 @@
|
|||||||
|
|
||||||
import 'package:flutter/animation.dart';
|
import 'package:flutter/animation.dart';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart'
|
||||||
|
hide
|
||||||
|
decelerateEasing, // ignore: undefined_hidden_name
|
||||||
|
standardEasing, // ignore: undefined_hidden_name
|
||||||
|
accelerateEasing; // ignore: undefined_hidden_name
|
||||||
|
// TODO(goderbauer): Remove implementation import when material properly exports the file.
|
||||||
|
import 'package:flutter/src/material/curves.dart'; // ignore: implementation_imports
|
||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
|
|
||||||
// TODO(shihaohong): Remove DualTransitionBuilder once flutter/flutter's `stable`
|
// TODO(shihaohong): Remove DualTransitionBuilder once flutter/flutter's `stable`
|
||||||
// branch contains DualTransitionBuilder.
|
// branch contains DualTransitionBuilder.
|
||||||
import 'dual_transition_builder.dart' as dual_transition_builder;
|
import 'dual_transition_builder.dart' as dual_transition_builder;
|
||||||
import 'utils/curves.dart';
|
|
||||||
|
|
||||||
/// Determines which type of shared axis transition is used.
|
/// Determines which type of shared axis transition is used.
|
||||||
enum SharedAxisTransitionType {
|
enum SharedAxisTransitionType {
|
||||||
@ -398,7 +403,7 @@ class _ExitTransition extends StatelessWidget {
|
|||||||
final Color fillColor;
|
final Color fillColor;
|
||||||
final Widget child;
|
final Widget child;
|
||||||
|
|
||||||
static final Animatable<double> _fadeOutTransition = FlippedCurveTween(
|
static final Animatable<double> _fadeOutTransition = _FlippedCurveTween(
|
||||||
curve: accelerateEasing,
|
curve: accelerateEasing,
|
||||||
).chain(CurveTween(curve: const Interval(0.0, 0.3)));
|
).chain(CurveTween(curve: const Interval(0.0, 0.3)));
|
||||||
|
|
||||||
@ -478,3 +483,21 @@ class _ExitTransition extends StatelessWidget {
|
|||||||
return null; // unreachable
|
return null; // unreachable
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Enables creating a flipped [CurveTween].
|
||||||
|
///
|
||||||
|
/// This creates a [CurveTween] that evaluates to a result that flips the
|
||||||
|
/// tween vertically.
|
||||||
|
///
|
||||||
|
/// This tween sequence assumes that the evaluated result has to be a double
|
||||||
|
/// between 0.0 and 1.0.
|
||||||
|
class _FlippedCurveTween extends CurveTween {
|
||||||
|
/// Creates a vertically flipped [CurveTween].
|
||||||
|
_FlippedCurveTween({
|
||||||
|
@required Curve curve,
|
||||||
|
}) : assert(curve != null),
|
||||||
|
super(curve: curve);
|
||||||
|
|
||||||
|
@override
|
||||||
|
double transform(double t) => 1.0 - super.transform(t);
|
||||||
|
}
|
||||||
|
@ -1,66 +0,0 @@
|
|||||||
// Copyright 2019 The Flutter Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style license that can be
|
|
||||||
// found in the LICENSE file.
|
|
||||||
|
|
||||||
import 'package:flutter/animation.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter/widgets.dart';
|
|
||||||
|
|
||||||
// The easing curves of the Material Library
|
|
||||||
/// The standard easing curve in the Material specification.
|
|
||||||
///
|
|
||||||
/// Elements that begin and end at rest use standard easing.
|
|
||||||
/// They speed up quickly and slow down gradually, in order
|
|
||||||
/// to emphasize the end of the transition.
|
|
||||||
///
|
|
||||||
/// See also:
|
|
||||||
/// * <https://material.io/design/motion/speed.html#easing>
|
|
||||||
const Curve standardEasing = Cubic(0.4, 0.0, 0.2, 1);
|
|
||||||
|
|
||||||
/// The accelerate easing curve in the Material specification.
|
|
||||||
///
|
|
||||||
/// Elements exiting a screen use acceleration easing,
|
|
||||||
/// where they start at rest and end at peak velocity.
|
|
||||||
///
|
|
||||||
/// See also:
|
|
||||||
/// * <https://material.io/design/motion/speed.html#easing>
|
|
||||||
const Curve accelerateEasing = Cubic(0.4, 0.0, 1.0, 1.0);
|
|
||||||
|
|
||||||
/// The decelerate easing curve in the Material specification.
|
|
||||||
///
|
|
||||||
/// Incoming elements are animated using deceleration easing,
|
|
||||||
/// which starts a transition at peak velocity (the fastest
|
|
||||||
/// point of an element’s movement) and ends at rest.
|
|
||||||
///
|
|
||||||
/// See also:
|
|
||||||
/// * <https://material.io/design/motion/speed.html#easing>
|
|
||||||
const Curve decelerateEasing = Cubic(0.0, 0.0, 0.2, 1.0);
|
|
||||||
|
|
||||||
// A tween that starts from 1.0 and ends at 0.0.
|
|
||||||
final Tween<double> _flippedTween = Tween<double>(
|
|
||||||
begin: 1.0,
|
|
||||||
end: 0.0,
|
|
||||||
);
|
|
||||||
|
|
||||||
/// Enables creating a flipped [CurveTween].
|
|
||||||
///
|
|
||||||
/// This creates a [CurveTween] that evaluates to a result that flips the
|
|
||||||
/// tween vertically.
|
|
||||||
///
|
|
||||||
/// This tween sequence assumes that the evaluated result has to be a double
|
|
||||||
/// between 0.0 and 1.0.
|
|
||||||
class FlippedCurveTween extends CurveTween {
|
|
||||||
/// Creates a vertically flipped [CurveTween].
|
|
||||||
FlippedCurveTween({
|
|
||||||
@required Curve curve,
|
|
||||||
}) : assert(curve != null),
|
|
||||||
super(curve: curve);
|
|
||||||
|
|
||||||
@override
|
|
||||||
double transform(double t) => 1.0 - super.transform(t);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Flips the incoming passed in [Animation] to start from 1.0 and end at 0.0.
|
|
||||||
Animation<double> flipTween(Animation<double> animation) {
|
|
||||||
return _flippedTween.animate(animation);
|
|
||||||
}
|
|
Reference in New Issue
Block a user