Skip to content
FlutterLearn

Every Flutter tutorial on FlutterLearn

26 lessons across three modules, roughly 5 hours of reading. Each module builds on the one before it.

  • accessibility2
  • async2
  • dart2
  • devtools2
  • forms2
  • navigation2
  • performance2
  • pubspec2
  • routing2
  • state2
  • ux2
  • a11y1
  • adaptive1
  • animation1

Module 01

Beginner

Install Flutter, learn Dart, and build your first real screens.

Module overview

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.

Lesson 2 · 12 min

Dart Essentials You Actually Need

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

Widgets and the Widget Tree

Everything in Flutter is a widget. Learn what widgets really are, how composition replaces inheritance, and how build methods work.

Lesson 5 · 11 min

State, setState and User Input

Handle taps, text input and switches, and understand exactly what setState does — and where state should live.

Lesson 6 · 10 min

Navigation Between Screens

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

Lists, Grids and Scrolling

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

Images, Assets, Icons and Fonts

Bundle images and fonts properly, load network images with loading and error states, and understand resolution-aware assets.

Lesson 9 · 9 min

Using Packages from pub.dev

Add dependencies, read version constraints, and judge whether a package is safe to depend on before you build your app on top of it.

Module 02

Intermediate

Real apps: state management, networking, forms, storage and animation.

Module overview

Lesson 1 · 14 min

State Management Beyond setState

Understand InheritedWidget, then compare Provider, Riverpod and BLoC honestly so you can pick one and move on.

Lesson 3 · 11 min

Forms, Validation and Input UX

Build forms with Form and TextFormField, write reusable validators, and get keyboard, focus and submission behaviour right.

Lesson 4 · 12 min

Storing Data Locally

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

Animations That Feel Right

Implicit animations, explicit controllers, Hero transitions and staggered sequences — with the performance rules that keep them smooth.

Lesson 6 · 12 min

Responsive and Adaptive UI

Make one codebase look right on phones, tablets, desktop and web — with layout breakpoints, adaptive components and correct theming.

Lesson 7 · 13 min

Declarative Routing with go_router

Move past Navigator.push: typed routes, deep links, auth redirects and a bottom navigation bar where every tab keeps its own history.

Lesson 9 · 12 min

Device Features and Permissions

Use the camera, location, files and sharing — and handle the permission flows that decide whether any of it works.

Module 03

Advanced

Architecture, performance, custom rendering, native code and release engineering.

Module overview

Lesson 3 · 14 min

Profiling and Fixing Performance

Find real jank with DevTools, understand UI versus raster thread costs, and apply the fixes that actually move the numbers.

Lesson 6 · 13 min

Release Builds, Signing and CI/CD

Configure flavours and environments, sign Android and iOS builds properly, shrink your app, and automate the whole release in CI.