eq method

bool eq(
  1. dynamic a,
  2. dynamic b
)

Helper function to check the equality of any two objects.

Implementation

bool eq(dynamic a, dynamic b) {
  if (a == null || b == null) {
    return true;
  }
  if (a is num && b is num) {
    return (a - b).abs() < tolerance;
  }
  if (a is Offset && b is Offset) {
    return eq(a.dx, b.dx) && eq(a.dy, b.dy);
  }
  if (a is List && b is List) {
    return a.length == b.length &&
        Iterable<int>.generate(a.length).every((i) => eq(a[i], b[i]));
  }
  if (a is Rect && b is Rect) {
    return eq(_rectAsList(a), _rectAsList(b));
  }
  if (a is RRect && b is RRect) {
    return eq(_rrectAsList(a), _rrectAsList(b));
  }
  if (a is Paint && b is Paint) {
    return eq(_paintAsList(a), _paintAsList(b));
  }
  return a == b;
}