From setup through Dart syntax, widgets and layout, navigation and forms, state management with Riverpod, HTTP and storage, testing, and signing and store submission. Over 50 lessons, you'll get to the point where you can build a memo app, with tests, that ships to iOS, Android, and the web from a single codebase. Every piece of code and every output shown was actually run on Flutter 3.47.5 / Dart 3.13.4.
The 50 lessons are split into 7 chapters. We recommend going in order from chapter 1,
but feel free to jump to whatever interests you.
Note: the code can't run in the browser, so install Flutter SDK 3.47.x locally and try it with dart run and flutter test. Chapters 1 to 5 need no device or emulator. From chapter 6 on, you'll use a simulator and an emulator.
We cover just the Dart you need to read Flutter code, running everything as we go. We work through types and null safety, collections, classes, sealed classes, and async. Once you finish this chapter, the code in chapter 2 onward won't stop you with "syntax I've never seen."
You'll create a project, show your first screen, and learn the widget tree, StatelessWidget and StatefulWidget, and the basics of layout. At the end, you'll measure the rule "constraints go down, sizes go up" for yourself, until you can fix overflow errors on your own.
You'll put together lists, scrolling, navigation, input forms, and themes to build screens that feel like a real app. At the end, you'll build a memo list screen, the starting point we'll lift into state management in the next chapter.
First you'll see exactly where setState hits its limits, then move values out of the widget tree with InheritedWidget and Riverpod. You'll narrow what gets rebuilt while counting rebuilds, and finally move the memo app onto Riverpod.
You'll run a local server and make HTTP round trips, map JSON onto types, and represent kinds of failure with types. Then you'll move on to saving settings and files, and finish with a memo app whose data survives closing and reopening.
You'll learn how to branch by platform and how the permission flow works, and how to write the three kinds of tests: unit, widget, and integration. We also cover how to read a failing test, so red output won't leave you stuck.
Starting from the difference between debug and release, you'll go through Android signing, iOS builds, icons, and store submission prep with real commands. Finally, we line Flutter up against Flet once more and give you a map of where to go next.
Once you finish all 50 lessons, try the Flet Fundamentals Course, which uses the same rendering from Python; the Kotlin & Android Intro Course or Swift for Beginners to see things from the native side; or API Design for Beginners to design the APIs your apps talk to. A membership unlocks every course.