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!
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.
- 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!
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.
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.
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
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
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
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
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
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
Automated Testing (Part II)
How to write various kinds of tests for many different scenarios:
- Widget tests
- Integration tests
- Golden image tests
- Robot testing
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
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
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
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
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
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.
Get the Flutter Foundations Course
Updated May 2023. Works with the latest Flutter, Riverpod, and GoRouter versions.
Join 1,800+ 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
- 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 firstname.lastname@example.org.
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 email@example.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!
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.
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
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.
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.
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.
Once you proceed to checkout, you'll have the option to add the Flutter & Firebase masterclass for an additional $89 (currently discounted while I complete all the course content).
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.10 and Dart 3.0 (released in May 2023), as well as the latest package versions (Riverpod 2.3, GoRouter 7.0).
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.
What if I get stuck? Can I ask questions?
Yes. You can ask questions on the course Q/A or Slack channel. 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 firstname.lastname@example.org 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 email@example.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 firstname.lastname@example.org for all the details.
I have another question!
Sure - email me at email@example.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.