avoid_implementing_value_types   
== をオーバーライドするクラスを実装しないでください。
詳細
#実装しないでください == をオーバーライドするクラスを。
== 演算子は、すべてのオブジェクト o1 と o2 に対して、o1 == o2 と o2 == o1 の両方が真であるか、または両方が偽であるかのいずれかである、等価関係である必要があります。
注意: Dart には真の*値型*はありません。そのため、代わりに
==を実装するクラスを値型の*プロキシ*と見なします。
implements を使用する場合、== のメソッド本体を継承しないため、== の契約に従うことはほぼ不可能になります。== をオーバーライドするクラスは通常、モックやフェイクを作成せずに、テストで直接使用できます。たとえば、与えられたクラス Size について
dart
class Size {
  final int inBytes;
  const Size(this.inBytes);
  @override
  bool operator ==(Object other) => other is Size && other.inBytes == inBytes;
  @override
  int get hashCode => inBytes.hashCode;
}悪い例
dart
class CustomSize implements Size {
  final int inBytes;
  const CustomSize(this.inBytes);
  int get inKilobytes => inBytes ~/ 1000;
}悪い例
dart
import 'package:test/test.dart';
import 'size.dart';
class FakeSize implements Size {
  int inBytes = 0;
}
void main() {
  test('should not throw on a size >1Kb', () {
    expect(() => someFunction(FakeSize()..inBytes = 1001), returnsNormally);
  });
}良い例
dart
class ExtendedSize extends Size {
  ExtendedSize(int inBytes) : super(inBytes);
  int get inKilobytes => inBytes ~/ 1000;
}良い例
dart
import 'package:test/test.dart';
import 'size.dart';
void main() {
  test('should not throw on a size >1Kb', () {
    expect(() => someFunction(Size(1001)), returnsNormally);
  });
}有効にする
#avoid_implementing_value_types ルールを有効にするには、analysis_options.yaml ファイルの linter > rules の下に avoid_implementing_value_types を追加してください。
analysis_options.yaml
yaml
linter:
  rules:
    - avoid_implementing_value_types代わりに YAML マップ構文を使用してリンター ルールを構成している場合は、linter > rules の下に avoid_implementing_value_types: true を追加してください。
analysis_options.yaml
yaml
linter:
  rules:
    avoid_implementing_value_types: true