prefer-equatable-mixin

Group
Style
Path
lint/style/prefer-equatable-mixin
Default
Off, opt in
Origin
Falcon
Domain
equatable
Rule
350 of 512
equatable

Prefer EquatableMixin to directly extending package:equatable's Equatable.

Invalid

example.dartdart
import 'package:equatable/equatable.dart';
import 'package:equatable/equatable.dart' as eq;
class First extends Equatable {}
class Second extends eq.Equatable {}
abstract class Third extends Equatable {}
class Fourth extends Equatable {}
class Fifth extends eq.Equatable {}
Prefer mixing in `EquatableMixin` instead of extending `Equatable`.
2import 'package:equatable/equatable.dart' as eq;
3class First extends Equatable {}
Prefer mixing in `EquatableMixin` instead of extending `Equatable`.
3class First extends Equatable {}
4class Second extends eq.Equatable {}
Prefer mixing in `EquatableMixin` instead of extending `Equatable`.
4class Second extends eq.Equatable {}
5abstract class Third extends Equatable {}
Prefer mixing in `EquatableMixin` instead of extending `Equatable`.
5abstract class Third extends Equatable {}
6class Fourth extends Equatable {}
Prefer mixing in `EquatableMixin` instead of extending `Equatable`.
6class Fourth extends Equatable {}
7class Fifth extends eq.Equatable {}

Valid

example.dartdart
import 'package:equatable/equatable.dart' as eq;
class First with eq.EquatableMixin {}
class Second extends First {}
class Third implements eq.Equatable {}
class Fourth {}
class Equatable {}
class Local extends Equatable {}
class Unknown extends Missing {}
mixin NeedsEquatable on eq.Equatable {}
class Constrained extends eq.Equatable with NeedsEquatable {}
class ConstrainedAlias = eq.Equatable with NeedsEquatable;

Configure prefer-equatable-mixin

Set its severity in falcon.json. See the configuration guide.

falcon.jsonjson
{
  "linter": {
    "rules": {
      "style": {
        "prefer-equatable-mixin": "error"
      }
    }
  }
}

Or silence one occurrence with a suppression comment; the reason is required.

example.dartdart
// falcon-ignore lint/style/prefer-equatable-mixin: <reason>
  • prefer-final-fieldsprefer_final_fieldsrecommended

    Flags a private field that is initialized but never reassigned, so it could be final (prefer-final-fields, adopted from package:lints).

  • prefer-final-in-for-eachprefer_final_in_for_eachrecommended

    Prefer final for a for-each loop variable that is never reassigned.

  • prefer-final-localsprefer_final_localsrecommended

    Prefer final for local variable declarations that are never reassigned.

  • prefer-final-parametersprefer_final_parameters

    Prefer final for parameters that are never reassigned.

  • prefer-firstprefer-first

    Flags [0] index access that should use the .first getter.

  • prefer-for-in

    Flags zero-based, unit-step index loops over a syntactically known list.

  • prefer-for-loop-in-childrenflutter

    Prefers collection-for elements over eager map/toList chains in Flutter children.

  • prefer-function-declarations-over-variablesprefer_function_declarations_over_variablesrecommended

    Flags a local variable bound to a function literal that should be a local function declaration.