Skip to main content

member-ordering

added in: 1.0.0 style

Enforces member ordering.

Config

Set order to configure the order for regular classes.

Set widgets-order to configure the order for widget classes.

The value for the order or widgets-order entries should match the following pattern:

< (overridden | protected)- >< (private | public)- >< static- >< late- >< (var | final | const)- >< nullable- >< named- >< factory- > (fields | getters | getters-setters | setters | constructors | methods)

where values in the <> are optional, values in the () are interchangeable and the last part of the pattern which represents a class member type is REQUIRED.

You can also apply order to a separate method, field or constructor by listing its name like:

  • build-method
  • dispose-method
  • init-state-method
  • my-custom-cool-thing-method
  • from-json-constructor
  • custom-field
info

Not all of the pattern parts are applicable for every case, for example, late-constructors are not expected, since they are not supported by the language itself.

For example, the value for order or widgets-order may be an array consisting of the following strings:

  • public-late-final-fields
  • private-late-final-fields
  • public-nullable-fields
  • private-nullable-fields
  • named-constructors
  • factory-constructors
  • getters
  • setters
  • public-static-methods
  • private-static-methods
  • protected-methods
  • etc.

You can simply configure the rule to sort only by a type:

  • fields
  • methods
  • setters
  • getters (or just getters-setters if you don't want to separate them)
  • constructors

The default config for order is:

  • public-fields
  • private-fields
  • public-getters
  • private-getters
  • public-setters
  • private-setters
  • constructors
  • public-methods
  • private-methods

The default config for widgets-order is (from Flutter style guide):

  • constructor
  • named-constructor
  • const-fields
  • static-methods
  • final-fields
  • init-state-method
  • var-fields
  • init-state-method
  • private-methods
  • overridden-public-methods
  • build-method

The alphabetize option will enforce that members within the same category should be alphabetically sorted by name.

The alphabetize-by-type option will enforce that members within the same category should be alphabetically sorted by theirs type name.

note

Only one alphabetize option could be applied at the same time.

Config example

With the default config:

dart_code_linter:
...
rules:
...
- member-ordering

OR with a custom one:

dart_code_linter:
...
rules:
...
- member-ordering:
alphabetize: true
order:
- public-fields
- private-fields
- constructors

OR Flutter specific:

dart_code_linter:
...
rules:
...
- member-ordering:
widgets-order:
- build-method
- init-state-method
- did-change-dependencies-method
- did-update-widget-method
- dispose-method

OR both custom and Flutter specific:

dart_code_linter:
...
rules:
...
- member-ordering:
order:
- public-fields
- private-fields
- constructors
- close-method
- dispose-method
widgets-order:
- constructor
- build-method
- init-state-method
- did-change-dependencies-method
- did-update-widget-method
- dispose-method