Contents
Contents

Avoid defining a one-member abstract class when a simple function will do.

This rule is available as of Dart 2.0.0.

Details

#

From Effective Dart:

AVOID defining a one-member abstract class when a simple function will do.

Unlike Java, Dart has first-class functions, closures, and a nice light syntax for using them. If all you need is something like a callback, just use a function. If you're defining a class and it only has a single abstract member with a meaningless name like call or invoke, there is a good chance you just want a function.

BAD:

dart
abstract class Predicate {
  bool test(item);
}

GOOD:

dart
typedef Predicate = bool Function(item);

Usage

#

To enable the one_member_abstracts rule, add one_member_abstracts under linter > rules in your analysis_options.yaml file:

analysis_options.yaml
yaml
linter:
  rules:
    - one_member_abstracts