flutter
Flutter & Dart app architecture
The opinionated default stack for a production Flutter app: feature-first + layered folders,
Riverpod 3 with codegen for shared/async state, a typed go_router, freezed immutable
models, a dio data layer, and explicit Result<T, Failure> error modeling — all on Material 3.
Escape hatches are first-class: Bloc/Cubit instead of Riverpod when the team already runs Bloc,
and raw http/get_it are allowed — but pick one of each per app, never mix two. Pinned versions
this skill targets: Flutter 3.44 / Dart 3.12, Riverpod 3.0, go_router 17.2.x
(+ go_router_builder 4.3.x), freezed 3.x / json_serializable, dio 5.x, mocktail 1.x.
Boundaries
⚠️ SDD new-feature gate — read this first. If this skill fired on a new, non-trivial feature or behaviour change and there is no approved spec + plan under
02-DOCS/wiki/sdd/, STOP — do not write feature code yet. Hand off to../specify/SKILL.mdfirst: it runs brainstorm → spec → plan → tasks before any code, then routes back here once the plan is approved. Build here directly only for a genuinely one-line / low-risk change. Method:../sdd/SKILL.md.