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:
- 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!
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.
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.
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 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.
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
Fully updated to Flutter 3.3, Riverpod 2.1, and GoRouter 5.1.
Choose the package that works for you
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.
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 500 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:
Firebase Project Setup
How to add Firebase to the Flutter app:
- Installation steps with FlutterFire CLI
- Initialization on iOS, Android, and Web
- Multiple Flavors and Environments
Adding user authentication flows to the app:
- Sign in with email and password
- Custom claims and user roles
Data Modeling with Firestore
Everything you need to know to work with Firestore:
- Working with realtime data in the Flutter app
- Documents and Collections
- Collection Groups and Indexes
- Security Rules
- Implementing Search (client-side vs Algolia)
- Queries and Pagination
- How to minimize your Firebase bill
- How to store and access product images with Firebase Storage
- CORS setup for the Flutter web app
Using the Firebase Local Emulator
How to use the Firebase Local Emulator for faster development:
- Running the Local Emulator
- Connecting the Flutter app to the Local Emulator
- Import and export data
Cloud Functions with TypeScript
How to develop, test, and deploy Cloud Functions with TypeScript:
- Auth and Firestore Triggers
- Https and callable functions
- Call Cloud Functions from Flutter and handle success/errors
- Work with Firestore Transactions
- Generate Bulk Data
- Deploying Cloud Functions
How to collect payments in the Flutter app:
- Overview of the various payment methods
- Stripe Dashboard and API keys
- Working with Payment Intents
- Backend integration with Stripe Webhooks
Firebase Config & API Keys
How to store keys securely using Firebase Config:
- Setting keys with the Firebase CLI
- Accessing keys inside Cloud Functions
- Working with keys in the Local Emulator
Deployment with Firebase Hosting
How to deploy the Flutter web app with Firebase Hosting:
- Build and deploy the web app
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 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.
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 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.
It also uses the latest packages, including Riverpod 2.1 and GoRouter 5.1.
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 email@example.com for all the details.
I have another question!
Sure - email me at firstname.lastname@example.org 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.