Steven's Knowledge

Flutter

Engineering guide for Flutter — best practices, pitfalls, advanced usage, performance, and state management

Flutter

Engineering knowledge for building production-grade Flutter applications. Skips Dart and Widget basics in favor of what actually determines project quality.

Topics

Engineering Layers

Flutter App
├── Presentation        Widget tree / Theme / Routing
│   ├── Page            Page-level Widgets, orchestrate business flow
│   ├── Component       Reusable UI components, no business dependencies
│   └── Layout          Scaffolding, responsive layout
├── State               State management (Provider / Riverpod / Bloc)
│   ├── ViewModel       Page-level state
│   ├── Repository      Data access abstraction
│   └── Service         Business domain logic
├── Data                Data sources
│   ├── Remote          API / GraphQL / WebSocket
│   ├── Local           SQLite / Hive / SharedPreferences
│   └── Cache           Memory cache, disk cache
└── Platform            Platform-specific
    ├── MethodChannel   Native method calls
    ├── EventChannel    Native event streams
    └── FFI             Direct C/C++ calls
StageFocusKey Outcome
Post-basicsWidget composition, StatelessWidget vs StatefulWidgetReadable, reusable pages
IntermediateState management, routing, dependency injectionDecoupled UI and business logic
PerformanceRebuild scope, image memory, list lazy loadingStable 60 fps, profile-mode debugging
Deep diveRenderObject, Slivers, custom paintingBreak free from built-in Widget limits
PlatformMethodChannel, FFI, plugin authoringDeep native integration

Why focus on practice over syntax

Official Flutter docs already cover Widget basics thoroughly. What truly determines project quality is rebuild scope control, state management selection, correct Key usage, platform difference handling, and performance profiling. These lessons are scattered across the docs — this section consolidates the hard-won knowledge that usually comes only from shipping and debugging real apps.

On this page