diff --git a/engine/src/flutter/lib/ui/lerp.dart b/engine/src/flutter/lib/ui/lerp.dart index 9c219dbb4c5..77e4a830b30 100644 --- a/engine/src/flutter/lib/ui/lerp.dart +++ b/engine/src/flutter/lib/ui/lerp.dart @@ -34,7 +34,7 @@ double _lerpDouble(double a, double b, double t) { /// /// Same as [lerpDouble] but specialized for non-null `int` type. double _lerpInt(int a, int b, double t) { - return a * (1.0 - t) + b * t; + return a + (b - a) * t; } /// Same as [num.clamp] but specialized for non-null [int]. diff --git a/engine/src/flutter/testing/dart/color_test.dart b/engine/src/flutter/testing/dart/color_test.dart index 445cae12c19..28649b09e89 100644 --- a/engine/src/flutter/testing/dart/color_test.dart +++ b/engine/src/flutter/testing/dart/color_test.dart @@ -77,6 +77,12 @@ void main() { Color.lerp(const Color(0x00000000), const Color(0xFFFFFFFF), 1.1), const Color(0xFFFFFFFF), ); + + // Prevent regression: https://github.com/flutter/flutter/issues/67423 + expect( + Color.lerp(const Color(0xFFFFFFFF), const Color(0xFFFFFFFF), 0.04), + const Color(0xFFFFFFFF), + ); }); test('Color.alphaBlend', () {