Skip to main content

prefer-sealed-bloc-state

added in: 1.24.0
⚙️
Free+

Warns when Bloc state classes do not have a sealed or final modifier.

info

If you keep your bloc state in separate files, consider using the include configuration option to scope the rule to only those files.

⚙️ Config

Set name-pattern (default is State$) to set a regular expression pattern for bloc state names.

analysis_options.yaml
dart_code_metrics:
rules:
- prefer-sealed-bloc-state:
name-pattern: State$

Example

❌ Bad:

// LINT: Prefer adding a 'sealed' or 'final' modifier to Bloc state.
abstract class CounterState {}

// LINT: Prefer adding a 'sealed' or 'final' modifier to Bloc state.
class CounterIncrementState extends CounterState {}

// LINT: Prefer adding a 'sealed' or 'final' modifier to Bloc state.
class CounterDecrementState extends CounterState {}

✅ Good:

sealed class CounterState {}

final class CounterIncrementState extends CounterState {}

final class CounterDecrementState extends CounterState {}