diff --git a/packages/flutter/lib/src/widgets/implicit_animations.dart b/packages/flutter/lib/src/widgets/implicit_animations.dart index 8de6aec867..8d76372058 100644 --- a/packages/flutter/lib/src/widgets/implicit_animations.dart +++ b/packages/flutter/lib/src/widgets/implicit_animations.dart @@ -152,11 +152,7 @@ class BorderTween extends Tween { /// Returns the value this variable has at the given animation clock value. @override - Border? lerp(double t) { - if (begin == null || end == null) - return t < 0.5 ? begin : end; - return Border.lerp(begin!, end!, t); - } + Border? lerp(double t) => Border.lerp(begin, end, t); } /// An interpolation between two [Matrix4]s. diff --git a/packages/flutter/test/animation/tween_test.dart b/packages/flutter/test/animation/tween_test.dart index ce75eba024..d4d13d9f5d 100644 --- a/packages/flutter/test/animation/tween_test.dart +++ b/packages/flutter/test/animation/tween_test.dart @@ -139,6 +139,17 @@ void main() { expect(animation.toStringDetails(), hasOneLineDescription); }); + test('BorderTween nullable test', () { + BorderTween tween = BorderTween(); + expect(tween.lerp(0.0), null); + expect(tween.lerp(1.0), null); + + tween = BorderTween(begin: null, end: const Border(top: BorderSide())); + expect(tween.lerp(0.0), const Border()); + expect(tween.lerp(0.5), const Border(top: BorderSide(width: 0.5))); + expect(tween.lerp(1.0), const Border(top: BorderSide())); + }); + test('SizeTween', () { final SizeTween tween = SizeTween(begin: Size.zero, end: const Size(20.0, 30.0)); expect(tween.lerp(0.5), equals(const Size(10.0, 15.0)));