
Full Course Bundle
The Complete Flutter Course Bundle
Learn about State Management, App Architecture, Navigation, Testing, and much more by building a full-stack Flutter eCommerce app on iOS, Android, and web.
Full Curriculum
What's inside
I'm creating an extensive Flutter curriculum made of 3 courses, covering many advanced topics that you'll need to create full-stack apps with Flutter & Firebase:
Flutter Foundations
- App Architecture
- State Management with Riverpod
- Navigation with GoRouter
- Automated Testing
- Error Handling
- Code Generation with Freezed
Flutter & Firebase Masterclass
- Firebase Authentication
- Data Modeling with Firestore
- Firebase Local Emulator
- Cloud Functions with TypeScript
- Stripe Integration
- Search with Algolia
Flutter in Production
- Flavors and Environments
- Error Reporting with Sentry
- CI/CD with GitHub Actions and Fastlane
- Deploy to the App Stores
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!
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:
- This widget does way too much, but where should all this logic go?
- I have bugs! How do I fix them and prevent new ones from appearing?
- I know I should write tests for this code, but I don’t know how. Help!
- Maybe I should just delete everything and start again! But how can I get it right next time?
I know how you feel. I’ve been there myself.
Now, imagine...
- Feeling confident about how to structure your code
- Knowing how to write automated tests for almost any case you can think of
- Having a repeatable process for adding new features, reliably
- Becoming comfortable with the entire app development lifecycle, from planning to implementation to deployment
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.
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.
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.
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.
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!
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.
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.
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!
Upcoming
A Complete Flutter Curriculum
I'm creating an extensive curriculum made of multiple courses, covering many advanced topics that you'll need as a professional Flutter developer.
Since all the Flutter foundations around app architecture, state management, and testing are so important, I'll cover them first as a standalone course.
Then, I will release a follow-up course about Firebase, covering everything you need to build full-stack apps with Flutter & Firebase, complete with backend integration using Cloud Functions and 3rd party integrations like Stripe and Algolia.
And finally, I'll publish an in-depth course about using Flutter in production. This will show you how to setup CI/CD workflows with GitHub Actions and Fastlane, as well as how to deploy your apps to Google Play and the App Store.
In creating these courses, I'll bring over a decade of experience in mobile app development, spend countless hours researching, learning, and experimenting with different techniques, and condense everything into a comprehensive curriculum.
State management, app architecture, navigation, testing, error handling & much more
Authentication, Firestore, Storage, Cloud Functions, Stripe payments, Search with Algolia
CI/CD with GitHub Actions, Fastlane, Error Reporting, Deployment to Google Play and App Store
Course #1
Flutter Foundations
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 Slack channel 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.
Course #1
Get the Flutter Foundations Course
Updated Feb 2023. Works with the latest Flutter, Riverpod, and GoRouter versions.
Join 1,500+ developers who have already decided to advance their Flutter skills.
Full Course (all modules)
- All 13 modules, totaling 14 hours of video
- Lifetime Access
- All Bonus Articles
- Full Source Code
- Premium Support on Slack
- English Subtitles
- Completion Certificate
- 30 Day Money Back Guarantee
The Essentials
- First 6 modules, totaling 7 hours of video
- Lifetime Access
- Some Bonus Articles
- Full Source Code
- Premium Support on Slack
- English Subtitles
- 30 Day Money Back Guarantee
Team packages are also available. For more info, send me an email at courses@codewithandrea.com.
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!
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.
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.
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!
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.
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.

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 if you're not happy with it, for any reason, you can reach out within 30 days of purchase to get a full refund.
Upcoming - Course #2
Flutter & Firebase Masterclass
Note: this is not included in the Flutter Foundations Course
After building the eCommerce client app in Flutter, we'll focus on the backend.
Here's what you'll learn:
Introduction
Firebase Pros and Cons
An overview of the Firebase Pros and Cons for Flutter app development:
- List of features and supported platforms
- Dart support (client vs server-side)
- Pricing
- Portability & vendor lock-in
- Developer experience
Module 1
Firebase Basics
Create a simple full-stack app with Flutter and Firebase:
- Installing the Firebase and FlutterFire CLI tools
- Adding Firebase to a Flutter app
- Simple authentication flow with Firebase UI
- Listening to auth state changes with GoRouter and Riverpod
- Getting started with Cloud Firestore
- CRUD operations and reading realtime data
- Firebase UI for Firestore: FirestoreListView, FirestoreQueryBuilder, Pagination
- Caching and offline mode
- Security rules and finishing touches
Module 2
Full-Stack eCommerce App Overview
A full overview of the eCommerce starter project:
- Feature-first app architecture with Riverpod
- Using repositories as Firebase API wrappers
- Choosing real vs "fake" repositories with provider overrides
- Configurable app bootstrap code
- Project structure: features and layers
- Modular architecture and Firebase UI tradeoffs
Module 3
Firebase Authentication
Adding user authentication flows to the app:
- Introduction to Firebase Authentication
- Adding Firebase to the eCommerce app (using FlutterFire CLI)
- Abstracting the FirebaseAuth APIs behind a repository
- Sign in with email and password
- Auth state changes and the User class
- Dealing with FirebaseAuthExceptions
- How to implement email verification
- Automated testing with FirebaseAuth
Module 4
Cloud Firestore and Firebase Storage
Multi-page image upload workflows with Firebase Storage and Cloud Firestore:
- Overview of the image upload UI screens
- Uploading images with Firebase Storage
- Storing the download URL with Cloud Firestore
- Adding, editing, and deleting products with Cloud Firestore
- Alternative image upload workflows: file picker / image picker
- User input and validation with complex forms
- Firebase error handling
- CORS setup for Firebase Storage images on Flutter web
Module 5
Firebase Local Emulator and Cloud Functions
Adding custom server-side code with Cloud Functions:
- Adding a local Firebase project with the Firebase CLI
- Working with the Firebase Local Emulator
- Choosing which emulators to run in the Flutter app
- Introduction to Cloud Functions and TypeScript
- TypeScript ESLint configuration
- Writing and testing Cloud Functions locally
- Generating and removing product list data with Cloud Functions
- Deploying Cloud Functions
- Calling https and callable functions from the Flutter app and handling errors
Module 6
Role-Based Authorization with Custom Claims
Implementing role-based authorization with custom claims:
- Setting custom claims securely with Cloud Functions
- Checking for ID token changes
- Unlocking admin-only features with custom claims
- Checking for admin claims in the GoRouter redirect logic
- Security rules with custom claims
- Securing callable Cloud Functions
Module 7
Cloud Firestore - Diving Deeper
Diving deeper with Cloud Firestore:
- NoSQL Data modeling
- Working with sub-collections and collection groups
- Cost measurement and optimization
- Queries and indexes
- More practice with CRUD
- Adding shopping cart, product reviews, checkout flows, and more
Module 8
Stripe Integration
How to collect payments in the Flutter app:
- Overview of the various payment methods
- Stripe Dashboard and API keys
- Storing API keys securely with Firebase Secrets
- Working with Payment Intents
- Native payment sheets on iOS & Android
- Web payment UI with Stripe.js
- Backend integration with Stripe webhooks
- Securing webhooks with signature verification
- Server-side order fulfillment with transactions
Module 9
Algolia Integration
How to implement server-side search with Algolia and Firebase extensions:
- Adding the Algolia extension to the Firebase project
- Indexing product data
- Adding Algolia-powered search to the Flutter app
Module 10
Deployment with Firebase Hosting
How to deploy the Flutter web app with Firebase Hosting:
- Build and deploy the web app
We’ll cover the topics above in great detail, and you won’t be left wondering if your code is secure or if you've structured your database properly.
And when it comes to code quality, we’ll make sure to write clean, maintainable code that’s easy to extend and scale.
By the end of this course you'll have built a full-stack eCommerce app, complete with a working backend and Stripe integration.
Upcoming - Course #3
Flutter & Firebase in Production
Note: this is not included in the Flutter Foundations Course
Learn how to completely automate the testing and deployment of your app.
Flavors and Environments
Setting up multiple flavors and environments:
- Why we need multiple flavors
- Setting up a multi-flavor Flutter app Very Good Start
- Adding Dev, Staging, and Production environments with FlutterFire CLI
Error Reporting with Sentry
How to collect and report errors in the Flutter app:
- Setting up a Sentry account
- How and where to report errors in the Flutter app
CI/CD with GitHub Actions and Fastlane
Setting up CI workflows with GitHub Actions:
- Basic Flutter workflows: build and test
- How to manage API keys securely with GitHub Actions
- Code signing with Fastlane
Deploy to the App Stores
Google Play & App Store deployment:
- Setting up developer accounts
- Code signing on iOS
- Automating code signing with Fastlane
- Development, AdHoc and Distribution builds
- Automating App Store submission with Fastlane
By the end of this course you'll be comfortable with the entire app development lifecycle, from planning to implementation to deployment.
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).
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!
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.
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!
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.
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.
FAQ
Frequently Asked Questions
How many courses are in this bundle?
I will include three courses in total, which can be purchased individually.
Do I need to purchase each course individually?
Yes. You can already purchase the Flutter Foundations course today.
The other two courses will be published later this year and are not included in the first purchase. In other words, you'll have to buy them separately to get access.
Will these courses be sold on Udemy?
No. Not now, not ever.
The only place to buy these courses is here.
How long are the courses?
Each course will include between 5 and 15 hours of content.
When will the courses be released?
You can already purchase the Flutter Foundations course today.
The other two courses will be published in the first half of 2023.
How much will the courses cost?
The Flutter Foundations course costs $129 currently and the price will increase over time.
The pricing for the two remaining courses will be announced later on.
Will you offer a pre-sale discount?
Yes. By signing up today you can secure your discount and be the first to know when the courses become available.
Is the course up to date?
Yes, the course is fully updated to Flutter 3.3 and Dart 2.18 and has been tested to work with Flutter 3.7.
It's also compatible with latest packages, including Riverpod 2.2+ and GoRouter 6.0+.
I'll continue to keep it up to date in the future.
Will you cover any state management packages other than Riverpod?
I'll include a brief overview of alternative techniques so that I can highlight the differences with Riverpod.
But we'll develop the course project using Riverpod only.
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 you cover any backends other than Firebase?
This is not currently planned, though I may create additional courses for other backends in the future.
We will design the Flutter codebase with good separation of concerns, making it easier to adopt a different backend if desired.
What about payment providers other than Stripe?
Stripe and RevenueCat are the only payment processors with good support for Flutter on iOS, Android, and web.
Since we'll build an eCommerce app to sell physical products, Stripe is the ideal choice.
I may cover other payments providers as part of separate courses in the future.
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.
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.
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.
instructor
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.