Full Course

Flutter Foundations

Learn about State Management, App Architecture, Navigation, Testing, and much more by building a Flutter eCommerce app on iOS, Android, and web.

Andrea’s Flutter content is amazing - it’s one of the few resources I consistently reference for advanced real-world solutions.

He clearly puts a huge amount of care and thought into every tutorial. Highly recommended!

Jeff Delaney (Fireship)

Jeff Delaney (Fireship)

Learn More

Course Overview

Getting started with Flutter is easy enough.

Once you know about the most important widgets, you can start building apps and add features.

But unless you have a robust architecture in place, you’ll soon run into problems and start questioning your decisions:

I know how you feel. I’ve been there myself.

Now, imagine...

Sounds good, right?

To help you get there, I’ll guide you through the process of building a real-world eCommerce app in Flutter. And I’ll explain my reasoning and decision-making all along.

You could waste hours or days trying to make sense of it all with some random tutorials.

Or you can learn with the techniques and best practices I learned through years of experience, all distilled into a well-structured curriculum that goes above and beyond what you can find on YouTube or Udemy.

Loved the course and got a lot out of it.

Especially appreciated how Andrea doesn't just show you the "right way" to do things from the start. He shows common errors and pitfalls and how to get around them, and eventually end up at the "right way" with a better understanding of how to actually get there in your own projects.

The course also has a healthy balance of code-alongs for relevant portions and provides you with updated project files throughout, so you don't have to spend hours manually going through every single line of the project.


Flutter Foundations Course

It could be my previous experience with writing code but DART explained by Andrea was smooth.

I never really understood OOP and I struggled in that area until I watched this course. I made sure I tried and completed every exercise even though it took me days.

Excellent course. Excellent Instructor, well knowledgeable and resourceful. Would totally recommend.

Wilfried Majaliwa

Wilfried Majaliwa

The Complete Dart Developer Guide

Andrea is the best! I love his passion and enthusiasm and dedication to teaching.

He cares deeply about programming and sharing his knowledge and experience with his students.

Frank Giordano

Andrea's teaching style is awesome.

I have been building Flutter apps for close to 3 years, and I still find a lot of useful and new material with his courses and articles.

Santos Enoque

Andrea has some of the highest quality online courses I have seen. He does not gloss over the issues of optimization or best practices that so many other courses do.

You can adapt what you learn from his courses, right into real-world applications!

Justin Borgers

Up-to-date content, didactic instructor, good support community on Slack, additional resources, tutorials and optional videos with the latest advances in Flutter.

Concise and direct to the point, with a huge number of diagrams. A colossal amount of work to simplify our learning.

Fabian Sosa Escalada

Everything's clear. I really love the way you explain, concise but completely understandable. Not a single detail is missed on any topic that is covered, and if so, you always leave references to really useful articles.

No doubt that anyone who take this course will end up with complete and strong Flutter skills.

Joshua Alvarado

Flutter Foundations Course

I have spent the weekend on just this lesson. It was a great time investment to watch the lessons, follow the links, and do the suggested homework.

Although I've been working with Flutter for almost a year and have taken several other courses, I feel like my skills have advanced further and faster this weekend than at any other point in the past year. Thank you!

Steve Balow

Flutter Foundations Course

A BIG BIG THANKS for this course and the others that you will release later in the year.

Its just so much fun to see something new from my favourite GURU (teacher) and the anticipation of its release is so so exciting.

Just looking at the curriculum, it shows how much effort and thought you have put into developing this.

Thank you once again, as I begin this new journey.

Vicky Bhavnagri

Flutter Foundations Course

I've been developing for more than 10 years, especially using web technologies, and I went through this course like a breeze.

I was impressed by Andrea's reactivity and quality of support on the course Q/A and on Slack.

I will be following his code architecture proposal going forward with my team on our Flutter projects.

Adrien Lemaire

Flutter Foundations Course

Course Curriculum

What's Inside

14h of Video
14h of Video
Bonus Articles
Bonus Articles
Full Source Code
Full Source Code
Premium Support
Premium Support

Module 1

Intro and Project Overview

A general overview of the course project:

  • Project setup & recommended VSCode extensions
  • App overview, project structure & code walkthrough
  • Running the app on iOS, Android, Web, and Desktop
  • Exploring the codebase with the Widget Inspector
  • Widget design principles: composition & code reuse
  • Responsive UI concepts
  • Localization

Module 2

Navigation with GoRouter

Declarative routing in Flutter: what, why, and how.

  • Limitations of Navigator 1.0
  • Migrating the project from Navigator 1.0 to GoRouter
  • Routes, sub-routes & navigation
  • The difference between "go" vs "push"
  • Routing by path vs routing by name
  • Passing parameters to routes
  • Navigation state and redirects

Module 3

App Architecture

How to choose and enforce the right architecture for your app:

  • Popular App Architectures: MVC, MVVM, Clean Architecture, Bloc
  • Architecture as a function of app complexity
  • Widgets, controllers, services, and repositories
  • Project Structure: Feature-first vs Layer-first
  • The repository pattern and the data layer
  • Working with Future and Stream-based APIs

Module 4

State Management with Riverpod (Part I)

Getting started with Riverpod:

  • Why Riverpod?
  • Installation and setup
  • Riverpod as a Dependency Injection system
  • Working with Providers, ConsumerWidget, and Consumer
  • Working with FutureProvider, StreamProvider, and AsyncValue
  • The family and autoDispose modifiers
  • Creating a reusable AsyncValueWidget helper

Module 5

State Management with Riverpod (Part II)

Going deeper with Riverpod by implementing a user authentication flow:

  • Working with StateNotifier and StateNotifierProvider
  • Using AsyncValue as a state class
  • ref.read() vs ref.watch()
  • Using ref.listen() to respond to errors
  • Working with dependencies and combining providers
  • Working with realtime data

Module 6

Automated Testing (Part I)

How to write unit tests, mock dependencies, and work with test coverage:

  • Unit tests
  • Mocking dependencies with Mocktail
  • Testing code with Futures, Streams, exceptions, predicates
  • Test lifecycle methods
  • Testing with Acceptance Criteria (Given When Then)
  • Generating Flutter test coverage data in VSCode
  • Running tests with GitHub Actions

Module 7

Automated Testing (Part II)

How to write various kinds of tests for many different scenarios:

  • Widget tests
  • Integration tests
  • Golden image tests
  • Robot testing

Module 8

Feature: Shopping Cart (with local data persistence)

Building the shopping cart feature for the eCommerce app:

  • Analysis and technical planning for a complex feature
  • How to store shopping cart data locally with Sembast
  • JSON serialization
  • App architecture: service classes and the application layer
  • Advanced Riverpod use cases
  • How to sync data between local and remote repositories
  • Automated tests for the cart business logic

Module 9

Feature: Checkout Flows

Building the checkout flows for the eCommerce app:

  • Implementing the user checkout journey (registration, payment)
  • Business client-side logic for placing orders
  • Adding unit, widget, integration tests for the checkout flows

Module 10

Error Handling

Strategies for handling errors in Flutter:

  • Errors vs Exceptions
  • How to represent exceptions: enums vs subclasses vs sealed classes with Freezed
  • Creating a robust error handling system
  • Logging errors with ProviderObserver
  • Functional error handling with Result types vs try/catch

Module 11

Feature: Product Reviews

Adding a product reviews feature to the eCommerce app:

  • Leaving reviews for purchased products
  • How to preload and submit form data (useful for CRUD operations)
  • Calculating and updating the average rating when the reviews change
  • When to use FutureProvider vs StreamProvider to build reactive UIs
  • Showing all reviews in the product page using slivers

Module 12

Feature: Product Search

Adding a product search feature to the eCommerce app:

  • How to search: client vs server-side
  • Writing a search service class
  • Debouncing search queries
  • Search implementation tradeoffs: Futures vs Streams

Module 13

New Riverpod 2.0 APIs & Riverpod Generator

Exploring the new APIs and features of Riverpod 2.0:

  • The new Riverpod Generator package
  • Converting existing providers to the new @riverpod syntax
  • Replacing StateNotifier with the new AsyncNotifier class
  • Writing unit tests for AsyncNotifier subclasses

We'll cover the topics above in great depth, with a good mix of theory and practice. I will explain important concepts with clear diagrams, and include exercises to help you apply what you learn.

Along the way, we'll build an eCommerce app with features such as a product listings, search functionality, shopping cart, checkout, etc.

You'll also have access to a Discord server where you can ask questions and get help directly from me.

Andrea once again proved why he is considered the best instructor when it comes to app architecture.

Even if this course was priced at $200, I would still have bought it because the value he provides is much more than that.

Aryan Sharma

Aryan Sharma

Flutter Foundations Course

Get the Flutter Foundations Course

Updated May 2024. Works with the latest Flutter, Riverpod, and GoRouter versions.

Join 2,600+ developers who have already decided to advance their Flutter skills.

Full Course (all modules)

USD(VAT may apply)
  • All 13 modules, totaling 14 hours of video
  • Lifetime Access
  • All Bonus Articles
  • Full Source Code
  • Premium Support on Discord
  • English Subtitles
  • Completion Certificate
  • 30 Day Money Back Guarantee

The Essentials

USD(VAT may apply)
  • First 6 modules, totaling 7 hours of video
  • Lifetime Access
  • Some Bonus Articles
  • Full Source Code
  • Premium Support on Discord
  • English Subtitles
  • 30 Day Money Back Guarantee

Checkout powered by LemonSqueezy.
Team packages are also available. For more details, see this page.

30 day money back guarantee

I spent over 800 hours making this a high-quality course and I'm confident you'll get a lot of value out of it.

But the only way to find out if this course is right for you is on the inside, not on the outside. So you get on the inside and see if it’s true and valuable to you. Then, if it is, that’s when you decide to keep it.

But if you're not happy with it, for any reason, you can reach out within 30 days of purchase to get a full refund. All you have to do is go to courses@codewithandrea.com and tell me “gimme my money back” and you got it, and in short order. My response time is usually 24 hours.

This is a great foundation course for aspiring Flutter devs.

Rather than learning from the top down (starting with rendering widgets etc), this course provides fundamental concepts which form the basis of developing robust, well-architected apps.

This is especially important for those who are not coming from a software engineering background.

Andrea is a naturally good teacher, who covers the material at a nice pace, and takes the time to explain context and what is going on as he proceeds through the course.

I'm looking forward to the follow up courses too!

Andrew Schox

Andrew Schox

Flutter Foundations Course

Yet another outstanding Flutter course, where Andrea guides us through the design and setup of an elegant and robust eCommerce solution, using Riverpod and GoRouter.

What makes this course outstanding are the clear explanations and rationales given for each design choice.

The app architecture Andrea introduces is well structured - one could even say very elegantly crafted. And it is all covered in clear and easy-to-digest steps.

Using what you learn here, you can take your Flutter skills to the next level and createclean, scalable, and robust production-ready Flutter apps.

The course series is still in production as I write this review. Having completed what is available so far, it is, in my opinion, on the path to becoming the “Flutter masterclass” reference course.

Mike Rydstrom

Mike Rydstrom

Flutter Foundations Course

Absolutely great course so far. You have just enough written for us that we're not mindlessly copying your code and losing context on what we are actually trying to learn.

Also, everything is precise and to the point. Every word said has been planned to give maximum weight and explanation to the lesson.

I can tell you spent a long time putting this together, and it shows. I wish other instructors were half as good as you at creating course content, putting it in the correct ratio of doing some for us beforehand, coding along with you, and giving other related info we need.

Even the links and other optional course material are top-notch. Thanks so much for a great course.

Jesse Coble

Flutter Foundations Course

This is, by far, the best Flutter video course I've followed.

It is very difficult to find such a comprehensive yet well-explained and easy-to-follow set of information about building a "real world" Flutter app using a sound architecture and powerful state management techniques.

You are hitting the correct balance between intermediate and advanced concepts that translate into a very usable learning curve and information easily transportable into other projects.

I've borrowed many ideas already and I'm looking forward to the next course!


Flutter Foundations Course

The content is simply exemplary. If you are interested in creating cross-device apps, then Flutter is a great choice and Andrea's lessons will get you up to speed.

If you care about good architecture, Andrea will help you out with a sensible approach that will make your code readable and maintainable.

Steve G

Flutter Foundations Course

I'm starting to realize that I was doing things the wrong way from the beginning.

I'm excited to see that I'm finally learning the best practices for working on a Flutter app, and I'm sure I will become very confident about building the complex app that I need.

Maurizio Tonelli

Flutter Foundations Course

I am working through the foundation course, and learning about riverpod and go_router. Great to have changes in those packages highlighted.

I am so impressed that Andrea keeps his course up to date.

Stephen Trinder

Flutter Foundations Course

Honestly, this course is just amazing.

It covers everything I wanted to learn, and the explanations are precise and of high quality. Thank you so much.


Flutter Foundations Course

Exceptionally clear and well thought-out.

This course and its approach to app architecture help to tackle the challenges of scaling real-world applications.

No other Flutter resources even come close.

Bryson Thill

Flutter Foundations Course

Andrea, you always do an outstanding job of trying to keep these lessons up-to-date and evergreen. A Herculean task to say the least.

I consider myself a seasoned, senior Flutter developer, but I find value in your work that challenges my Flutter and Dart knowledge and gives me new perspectives. Keep up the great work, Sensei. ;)

Michael Jordan

Flutter Foundations Course

Excellent Course Lessons. Learned about the Riverpod how to use it for state management in depth.

The entire course is very well planned and the changes in the new versions are also incorporated.

Minkesh Jain

Flutter Foundations Course

So far, the course has delivered its promise to teach from a practical and professional perspective for intermediate and advanced users.

Love the tips and the side notes on the lessons.

Enrique Ortiz

Flutter Foundations Course

What's next

Flutter & Firebase Masterclass

After the Flutter Foundations course, you can take my follow-up course, where you'll learn how to create full-stack apps with Flutter & Firebase.

Check it out to see what's inside. 👇

Flutter & Firebase Masterclass

  • Firebase Authentication
  • Data Modeling with Firestore
  • Firebase Local Emulator
  • Cloud Functions with TypeScript
  • Stripe Integration
  • Search with Algolia

Intended Audience

Who are these courses for?

These are intermediate to advanced-level courses, going above and beyond what you can find on YouTube or Udemy.

To make the most of them, you'll need to be already familiar with the Dart language (my Dart course can help with that) and how to build apps with Flutter.

The sections about state management and navigation will use the Riverpod and go_router packages, starting from the basics (it's ok if you haven't used them before).

Likewise, it's ok if you don't know how to use Firebase yet. I'll cover the basics quickly and then move on to the more advanced topics.

Ultimately, you'll become confident with the entire app development lifecycle, have a full eCommerce app to show for it, and save lot of time and effort in the future.

Success Stories

Kind words from my students

Andrea clearly put a lot work into the material, and after completing solely this course, now I really feel like I now know the fundamentals of Dart and am ready to finally dive into Flutter with confidence!

Thank you again for this great course, I went through some of the lessons multiple times, but it was definitely worth it, and will surely revisit some of the topics if needed.

I love that all topics are separated into short videos, and that every second of every video is valuable (not wasting our time for a moment).


The Complete Dart Developer Guide

I can honestly say that Andrea's knowledge and guidance is top notch! He explains the principles well which helps you understand the concepts and structures within the Dart language.

This course is a great asset to anyone looking to improve their coding skills. Having Andrea by your side, you should feel privileged to have a mentor / coach of his caliber, who shares his knowledge in such an "easy to understand" manner. Thanks!

Andri De Jager

The Complete Dart Developer Guide

Animations have always been my weak point, but Andrea's course covers most if not all the biggest Animation topics, and does so with lots of examples.

Another fantastic course from a great teacher.

Tadas Petra

Tadas Petra

Flutter Animations Masterclass

Andrea always goes in-depth by creating high-quality courses, and this one does not disappoint.

Learning about animations in Flutter is vital to building beautiful and engaging applications.

I highly recommend this course if you want to master animations in Flutter!

Robert Brunhage

Robert Brunhage

Flutter Animations Masterclass

Very well structured course. Easy to understand and Andrea answers questions in his lectures actively.

There's a lot of complex subjects and concepts that Andrea has helped me feel comfortable enough to grasp with his teaching style.

Top notch and highly recommend this course if you're looking to learn Flutter, Dart and Firebase.

Jaime Boyaca

Jaime Boyaca

Flutter & Firebase Course: Build a Complete App for iOS & Android

Clear explanations, a useful practical application that demonstrates all the core things essential to building an app ready for release into the wild.

Every step taken is clearly and thoroughly explained, plus downloadable code for every section of this course. A fantastic current course and is proving invaluable for strategies for building ideas for my own app.

Cannot praise this course and Andrea’s presentation highly enough.

Cheryl Kirsten

Flutter & Firebase Course: Build a Complete App for iOS & Android


Frequently Asked Questions

How long is the course?

The course contains 14 hours of video content, along with source code, lesson notes, and many additional resources.

How much does the course cost?

The Flutter Foundations course costs $149 (unless a promotion is ongoing).

On the checkout page, you'll have the option to add the Flutter & Firebase masterclass for an additional $119 ($30 off).

Will you offer discounts in the future?

From time to time (e.g. Black Friday) I offer discounts, however these are very infrequent.

If you want to get value from the course, your best option is to buy today. If you're not satisfied, you can get a refund within 30 days of purchase.

Is the course up to date?

Yes. The course is fully updated to Flutter 3.22 and Dart 3.4 (released in May 2024), as well as the latest package versions.

I'll continue to keep it up to date in the future.

Will you cover any state management packages other than Riverpod?

We'll develop the course project using Riverpod only.

With that said, many of the concepts covered in the course are library-agnostic and you'll be able to apply them even if you use a different state manangement package.

Will you cover any navigation packages other than GoRouter?

No. There is a lot to cover already, so we'll focus on going from the Navigator 1.0 API to GoRouter, and explain why it's more convenient than Navigator 2.0.

Will there be follow-up courses?

This is the first of three courses:

  • Flutter Foundations Course (available)
  • Flutter & Firebase Masterclass (available)
  • Flutter in Production (not available yet)

Once the last course is published, you'll be able to buy all three as a single bundle.

But for now, you can buy the first two courses together on the checkout page.

What if I get stuck? Can I ask questions?

Yes. You can ask questions on the course Q/A in the Discord server. I answer most questions within 24 hours.

Will I get a completion certificate?

Sure do! Once you complete the course this will be issued to you automatically.

I'm a student / I can't afford the course / I live outside the US/EU / do you support Purchasing Power Parity (PPP)?

Unfortunately PPP is not supported by my course platform. If you'd like to request a discount, please fill this form.

I bought the essentials package. Can I upgrade to the complete package?

Sure - email me at courses@codewithandrea.com and I'll send you a coupon that you can use to upgrade to the full package.

What if I don't like the course?

The course comes with a 30 day money back guarantee. If you're not happy with the course, for any reason, you can reach out and I'll issue a full refund.

All you have to do is go to courses@codewithandrea.com and tell me “gimme my money back” and you got it, and in short order. My response time is usually 24 hours.

Do you offer team packages?

Sure thing! I offer team packages at discounted rates.

Email me at courses@codewithandrea.com for all the details.

I have another question!

Sure - email me at courses@codewithandrea.com and I'll reply within 48 hours.


Hello, I’m Andrea


My name is Andrea, I'm a Flutter GDE and I've been writing code professionally for over 12 years. I've been a mobile app developer since 2012, working for startups and big companies.

With my Flutter tutorials and courses, I've helped thousands of students become better developers.

By taking this course, you'll considerably advance your Flutter skills and become confident with the entire app development lifecycle.