Tooling, Testing & Production
From code to shipped app
Section titled “From code to shipped app”Writing widgets is only half the job. The other half is the machinery around them: the toolchain that runs your code, the tests that prove it works, the build modes that turn Dart into a fast native binary, and the production concerns that decide whether real users have a good day.
This module is that second half — the parts that separate a demo from a product.
What this module covers
Section titled “What this module covers”| Lesson | What you’ll learn |
|---|---|
| Project & tooling | pubspec.yaml, the flutter CLI, DevTools, and hot reload vs hot restart |
| Testing | Unit, widget, integration, and golden tests |
| Build & release | Debug/profile/release modes, JIT vs AOT, flavors, per-platform output |
| Production concerns | Error handling, crash reporting, profiling, and CI/CD |
The shape of the workflow
Section titled “The shape of the workflow”flowchart LR dev["develop (hot reload)"] --> test["test (unit/widget/golden)"] test --> build["build (release, AOT)"] build --> ship["ship (monitor, profile, CI/CD)"]
Each stage has its own tools and its own failure modes. The through-line: Flutter optimizes hard for a fast inner loop (hot reload), then flips to a completely different compilation strategy (AOT) for release — and understanding that split explains most of the tooling.