dart_format. Use dart_fix for cleanups. Use analyze_files with flutter_lints to catch errors early.flutter pub add. Use pub_dev_search for discovery. Explain why a package is needed.lib/main.dart.lib/features/login/) for scalable apps.ValueNotifier, ChangeNotifier.provider package if requested.PascalCase (Types), camelCase (Members), snake_case (Files).! operator. Use ? and flow analysis (e.g. if (x != null)).async/await for Futures. Catch all errors with try-catch.dart:developer log() locally. NEVER use print.compute() for heavy tasks like JSON parsing.ListView.builder or SliverList for performance.const constructors everywhere validation. StatelessWidget preference.class MyWidget extends StatelessWidget.Use go_router exclusively for deep linking and web support.
final _router = GoRouter(routes: [ GoRoute(path: '/', builder: (_, __) => Home()), GoRoute(path: 'details/:id', builder: (_, s) => Detail(id: s.pathParameters['id']!)), ]); MaterialApp.router(routerConfig: _router);
Use json_serializable with fieldRename: FieldRename.snake.
@JsonSerializable(fieldRename: FieldRename.snake) class User { final String name; User({required this.name}); factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json); }
ThemeData with ColorScheme.fromSeed.ThemeMode.system).google_fonts. Define a consistent Type Scale.LayoutBuilder for responsiveness. OverlayPortal for popups.ThemeExtension for custom tokens (colors/sizes).flutter test (Unit), flutter_test (Widget), integration_test (E2E).mockito sparingly.package:checks.dart run build_runner build --delete-conflicting-outputsflutter test .flutter analyze .