| j / k | Scroll down / up |
| gg | Scroll to top |
| G | Scroll to bottom |
| / | Open search |
| ? | Show this help |
| Esc | Close search / help |
| n / N | Next / previous section |
| h | Go to landing |
| d | Go to docs |
| : | Command mode — type section name |
Press ? or Esc to close
Flutter Architecture Blueprint
One way to build features. Predictable structure, zero ceremony.
Cubit by default. Store owns data. DI scoped to routes.
Philosophy
Low cognitive load. Low effort to add new features. No abstractions you didn't ask for.
Organized by feature, not by type. Easy to find, delete, or reuse a feature without touching anything else.
One place for all data logic: cache strategy, network calls, error handling. Nothing else touches the data.
Cubit by default. Bloc only when event transformations or traceability are needed. Not "better" — more structured.
Registered on route entry, destroyed on exit. Fast startup, low memory, zero cross-feature coupling.
No hardcoded colors, sizes, or strings. context.colors.* is the only API into the theme system.
Don't add by default. Add per feature, only when offline support is a genuine requirement — not nice-to-have.
Data Flow
Every request follows the same path. No shortcuts, no UI that fetches data directly, no hidden side effects.
Tech Stack
Every package earned its place. Nothing added speculatively.
| Layer | Technology |
|---|---|
| Framework | Flutter · Dart |
| State Mgmt | flutter_bloc — Cubit (default) / Bloc (complex) |
| DI | get_it — lazy singletons, feature-scoped |
| Routing | go_router with StatefulShellRoute |
| Network | dio with auth, logging, error interceptors |
| Local Storage | shared_preferences · flutter_secure_storage · sqflite (opt-in) |
| Firebase | Core · Analytics · Crashlytics · Messaging · Remote Config |
| WebView | flutter_inappwebview with JS bridge |
| Localization | Custom 3-source: file cache → remote → asset |