Unverified Commit b39e315e authored by Michael Goderbauer's avatar Michael Goderbauer Committed by GitHub

Add equals and hasCode to Tween (#37793)

parent f90c5e20
......@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:ui' show Color, Size, Rect;
import 'dart:ui' show Color, Rect, Size, hashValues;
import 'package:flutter/foundation.dart';
......@@ -260,6 +260,21 @@ class Tween<T extends dynamic> extends Animatable<T> {
return lerp(t);
}
@override
int get hashCode {
return hashValues(begin, end);
}
@override
bool operator ==(dynamic other) {
if (identical(this, other))
return true;
if (other.runtimeType != runtimeType)
return false;
final Tween<T> typedOther = other;
return typedOther.begin == begin && typedOther.end == end;
}
@override
String toString() => '$runtimeType($begin \u2192 $end)';
}
......
......@@ -93,4 +93,18 @@ void main() {
expect(tween.lerp(0.5), 100.0);
expect(tween.lerp(1.0), 100.0);
});
test('Tween equals', () {
final Tween<double> doubleTween1 = Tween<double>(begin: 10, end: 22);
final Tween<double> doubleTween2 = Tween<double>(begin: 10, end: 22);
final Tween<double> doubleTween3 = Tween<double>(begin: 33, end: 44);
final Tween<int> intTween = Tween<int>(begin: 33, end: 44);
final Tween<double> constantTween = ConstantTween<double>(10);
expect(doubleTween1 == doubleTween1, isTrue);
expect(doubleTween1 == doubleTween2, isTrue);
expect(doubleTween2 == doubleTween3, isFalse);
expect(doubleTween2 == intTween, isFalse);
expect(doubleTween1 == constantTween, isFalse);
});
}
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