Lesson 1 · 9 min
What Flutter Is and How to Set It Up
Understand what Flutter actually does under the hood, then install the SDK and run your first app on a simulator or real device.
26 lessons across three modules, roughly 5 hours of reading. Each module builds on the one before it.
Module 01
Install Flutter, learn Dart, and build your first real screens.
Lesson 1 · 9 min
Understand what Flutter actually does under the hood, then install the SDK and run your first app on a simulator or real device.
Lesson 2 · 12 min
The subset of Dart that Flutter code is written in: null safety, classes, collections, futures and async/await — without the parts you can skip.
Lesson 3 · 10 min
Everything in Flutter is a widget. Learn what widgets really are, how composition replaces inheritance, and how build methods work.
Lesson 4 · 13 min
Master Flutter's layout model — constraints go down, sizes go up — and stop fighting overflow errors.
Lesson 5 · 11 min
Handle taps, text input and switches, and understand exactly what setState does — and where state should live.
Lesson 6 · 10 min
Push and pop screens, pass data both ways, and set up named routes — plus when you should graduate to a router package.
Lesson 7 · 12 min
Render long lists efficiently with ListView.builder, lay out grids, add pull-to-refresh and swipe-to-delete, and meet slivers.
Lesson 8 · 10 min
Bundle images and fonts properly, load network images with loading and error states, and understand resolution-aware assets.
Lesson 9 · 9 min
Add dependencies, read version constraints, and judge whether a package is safe to depend on before you build your app on top of it.
Lesson 10 · 11 min
Decode Flutter's most common error messages, use breakpoints and the widget inspector, and build a repeatable approach to fixing bugs.
Module 02
Real apps: state management, networking, forms, storage and animation.
Lesson 1 · 14 min
Understand InheritedWidget, then compare Provider, Riverpod and BLoC honestly so you can pick one and move on.
Lesson 2 · 15 min
Fetch data over HTTP, parse JSON into typed models, handle every failure mode, and show the result without jank.
Lesson 3 · 11 min
Build forms with Form and TextFormField, write reusable validators, and get keyboard, focus and submission behaviour right.
Lesson 4 · 12 min
Pick the right storage for the job: shared_preferences for settings, files for documents, SQLite for structured data, secure storage for secrets.
Lesson 5 · 13 min
Implicit animations, explicit controllers, Hero transitions and staggered sequences — with the performance rules that keep them smooth.
Lesson 6 · 12 min
Make one codebase look right on phones, tablets, desktop and web — with layout breakpoints, adaptive components and correct theming.
Lesson 7 · 13 min
Move past Navigator.push: typed routes, deep links, auth redirects and a bottom navigation bar where every tab keeps its own history.
Lesson 8 · 14 min
Build a complete sign-in flow: token storage, automatic refresh, an auth state that drives the UI, and secure sign-out.
Lesson 9 · 12 min
Use the camera, location, files and sharing — and handle the permission flows that decide whether any of it works.
Lesson 10 · 12 min
Translate your app properly, handle plurals, dates and right-to-left layouts, and make every screen usable with a screen reader.
Module 03
Architecture, performance, custom rendering, native code and release engineering.
Lesson 1 · 14 min
Layer a Flutter codebase so features can be added by several people at once without the whole thing turning into spaghetti.
Lesson 2 · 15 min
Understand build, layout and paint, then draw exactly what you want with CustomPainter and custom render objects.
Lesson 3 · 14 min
Find real jank with DevTools, understand UI versus raster thread costs, and apply the fixes that actually move the numbers.
Lesson 4 · 13 min
Call Android and iOS APIs from Dart with method channels, stream native events back, and use FFI for direct C interop.
Lesson 5 · 14 min
Unit, widget, golden and integration tests — what each is good at, how to write them fast, and how to keep the suite trustworthy.
Lesson 6 · 13 min
Configure flavours and environments, sign Android and iOS builds properly, shrink your app, and automate the whole release in CI.