Skip to main content

named_parameters_ordering

A lint which allows to enforce a particular named parameter ordering conventions.

Configuration format

 - named_parameters_ordering:
order:
- (parameterType)

Where parameterType can be one of:

  • super
  • required_super
  • required
  • nullable
  • default

Example:

Assuming config:

custom_lint:
rules:
- named_parameters_ordering:
order:
- required
- required_super
- default
- nullable
- super

BAD:

class UserProfile extends User {
final String? age;
final String? country;
final String email;
final bool isActive;
final String name;

UserProfile({
this.age,
required super.accountType, // LINT, required super named parameters should be before nullable named parameters
required this.name, // LINT, required named parameters should be before super named parameters
super.userId,
this.country, // LINT, nullable named parameters should be before super named parameters
this.isActive = true, // LINT, default named parameters should be before nullable named parameters
required this.email, // LINT, required named parameters should be before default named parameters
});

void doSomething({
required String name,
int? age,
bool isActive = true, // LINT, default named parameters should be before nullable named parameters
required String email, // LINT, required named parameters should be before default named parameters
}) {
return;
}
}

GOOD:

class UserProfile extends User {
final String? age;
final String? country;
final String email;
final bool isActive;
final String name;

UserProfile({
required this.name,
required this.email,
required super.accountType,
this.isActive = true,
this.age,
this.country,
super.userId,
});

void doSomething({
required String name,
required String email,
bool isActive = true,
int? age,
}) {
return;
}
}

Parameters

order (List<ParameterType>)

Config used for order of named parameters