Every single keyword in Dart and variable must be declared in it's own file.

❌  BAD - Grouping concerns.

// foo.dart

final class Foo extends StatefulWidget {
  const Foo({super.key});

  @override
  State<Foo> createState() => _FooState();
}

final class _FooState extends State<Foo> {
  @override
  Widget build(_) {
    return const Text('Hello, World!');
  }
}

✅  GOOD - Separating concerns into their own files.

// foo.dart

part '_foo_state.dart';

final class Foo extends StatefulWidget {
  const Foo({super.key});

  @override
  State<Foo> createState() => _FooState();
}
// _foo_state.dart

part of 'foo.dart';

final class _FooState extends State<Foo> {
  @override
  Widget build(_) {
    return const Text('Hello, World!');
  }
}