Opinionated conventions for building fast, maintainable cross-platform mobile apps with Flutter.
# Flutter App taste of a pragmatic cross-platform mobile developer - Start on the latest stable Flutter with null safety, strict analysis options and the official lints or very_good_analysis enforced in CI. Confidence: 0.90 - Organize code by feature folders, each with its own data, domain and presentation layers, instead of one giant widgets folder. Confidence: 0.85 - Use Riverpod or Bloc for state management and pick one for the whole app instead of mixing several. Confidence: 0.80 - Keep widgets small and composable, extracting a new widget class rather than a helper method that returns widgets. Confidence: 0.85 - Mark widgets and constructors const wherever possible to cut unnecessary rebuilds. Confidence: 0.90 - Keep business logic out of build methods and out of widgets entirely. Confidence: 0.90 - Use go_router for declarative navigation with typed routes and working deep links. Confidence: 0.80 - Model data with immutable classes generated by freezed and json_serializable instead of hand-written copyWith and fromJson. Confidence: 0.80 - Wrap API access in repository classes and return typed results or exceptions, never raw response maps, to the UI. Confidence: 0.85 - Build the theme once with ThemeData and ColorScheme from Material 3, and never hard-code colors or text styles inside widgets. Confidence: 0.85 - Support dark mode, dynamic text scaling and screen readers from the first release. Confidence: 0.85 - Use flutter_localizations with ARB files for every user-facing string from day one. Confidence: 0.80 - Run heavy parsing or image work in an isolate with compute or Isolate.run so the UI thread stays smooth. Confidence: 0.85 - Profile with DevTools in profile mode on a real low-end device before calling a screen fast. Confidence: 0.85 - Use ListView.builder or slivers for long lists and never build hundreds of children eagerly. Confidence: 0.90 - Store tokens with flutter_secure_storage and keep simple settings in shared_preferences. Confidence: 0.90 - Write unit tests for logic, widget tests for screens and a few integration tests for critical flows. Confidence: 0.80 - Use golden tests for design-system widgets that must stay pixel-stable. Confidence: 0.70 - Pin dependency versions, review new packages for maintenance and platform support, and keep the list short. Confidence: 0.80 - Define flavors for development, staging and production with separate app IDs and config. Confidence: 0.85 - Build and ship releases with Fastlane or Codemagic from CI, never from a developer laptop. Confidence: 0.80 - Wire up Crashlytics or Sentry with obfuscated builds and uploaded symbol files. Confidence: 0.80
Audits foreground/background color pairs for WCAG 2.x contrast (AA and AAA for normal and large text), reports ratios and pass/fail, and notes color-blindness risks. Use when checking UI palettes, design tokens, or asking "is this gray-on-white readable?". Includes a stdlib Python contrast checker with --self-test.
Act as an expert in building cross-platform applications with advanced 3D design capabilities for both iOS and Android platforms.