Skip to main content

avoid_multiple_declarations_per_file

Warns about multiple nominal declarations (classes, enums, mixins, extensions, extension types) in a single file.

Each declaration should ideally live in its own dedicated file matching its name, improving navigation, test structure, and Single Responsibility Principle.

Example config:​

solid_lints:
diagnostics:
avoid_multiple_declarations_per_file:
ignored_types:
- State
exclude_entity:
- extension_type
- enum
allow_private: true
maximum_loc: 20

Example​

BAD:​

class Parent extends StatelessWidget {}

class _Child extends StatelessWidget {} // LINT
class User {}

enum UserRole { admin, regular } // LINT

GOOD:​

// parent.dart
import 'child.dart';

class Parent extends StatelessWidget {}

// child.dart
class Child extends StatelessWidget {}

Parameters​

ignored_types (String | List<String> | Map<String, Object?>)​

Types and their subtypes that should be ignored as violations.

Example:

solid_lints:
diagnostics:
avoid_multiple_declarations_per_file:
ignored_types:
- State
class MyWidget extends StatefulWidget {}

class _MyWidgetState extends State<MyWidget> {} // OK

exclude_entity (String | List<String>)​

AST entities (e.g. enum, mixin, extension, extension_type) to exclude.

Example:

solid_lints:
diagnostics:
avoid_multiple_declarations_per_file:
exclude_entity:
- extension_type
- enum
class User {}

extension type UserId(int id) {} // OK

enum UserRole { admin, regular } // OK

allow_private (bool)​

Whether private declarations (e.g. prefixed with _) are allowed.

Example:

solid_lints:
diagnostics:
avoid_multiple_declarations_per_file:
allow_private: true
class PublicClass {}

class _PrivateHelper {} // OK

maximum_loc (int?)​

Maximum lines of code allowed for secondary declarations, excluding blank lines and comments.

Example:

solid_lints:
diagnostics:
avoid_multiple_declarations_per_file:
maximum_loc: 10
class MainClass {}

class SmallHelper {
// Comments and blank lines are excluded from LOC calculation.
void run() {}
} // OK if LOC <= 10