Flutter in Production

Learn about flavors, environments, error monitoring, analytics, release management, CI/CD, and finally ship your Flutter apps to the stores. 🚀

--

Completed

--

Lessons completed

to track your course
progress

Module 1

Course Introduction

An overview of the course structure and topics covered, along with a walkthrough of the companion app for this course.

01 - Welcome to Flutter in Production! 🎉
02 - Join Code With Andrea on Discord
03 - Intro to the Flutter App Release Checklist
04 - Intro to the Starter Project
05 - Starter Project: Code Walkthrough
06 - Wrap Up
07 - Request for Feedback

Module 2

Launcher Icons and Splash Screens

Learn how to generate your launcher icons and launch screens on Android, iOS, and web.

01 - Intro to Launcher Icons
02 - Generating App Icons with Flutter Launcher Icons
03 - Launcher Icon Guidelines and Android Adaptive Icons
04 - How to Design Your App Icons in Figma
8:11
05 - Flutter Launcher Icons Checklist
06 - Generating Custom Splash Screens with Flutter Native Splash
07 - Launcher Icons and Splash Screens: Wrap Up
08 - Request for Feedback

Module 3

Adding Flavors to a Flutter App

A complete guide to flavors in Flutter. What are flavors, why do we need them, and how to configure them on Android and iOS (both for new and existing apps).

01 - Intro to Flavors and Environments
02 - The Difference Between Flavors and Dart Defines
03 - Flutter Flavorizr: Introduction
04 - Flutter Flavorizr: Icons Setup
05 - Flutter Flavorizr: Android Setup
06 - Flutter Flavorizr: iOS Setup
07 - Single or Multiple Entry Points?
08 - Flutter Flavors: IDE Setup (VSCode)
09 - Flutter Flavors: IDE Setup (Android Studio)
10 - How to Enable Flavors on Flutter Web
11 - Flutter Flavors Checklist
12 - Manual Flavors: Introduction and Android Setup
13 - Manual Flavors: iOS Setup
14 - Whitelabel App: Challenge
15 - Whitelabel App: Solution and Checklist
16 - Intro to Multiple Flavors with Flutter & Firebase
17 - Creating Multiple Firebase Projects
18 - FlutterFire Setup with Multiple Flavors
19 - Multi-Flavor Firebase Initialization in Dart
20 - Firebase Flavors Checklist
21 - Flutter Flavors: Wrap Up
22 - Request for Feedback

Module 4

Error Monitoring with Sentry

How to use Sentry to report, monitor, diagnose, and fix errors in your Flutter app when running in production.

01 - Intro to Error Monitoring
02 - Sentry vs Crashlytics: A Comparison
03 - Sentry Setup: Basics
04 - Sentry Setup: Environments and Flavors
05 - Fixing the First Real Issue (Zone Mismatch Error)
06 - Case Study: Capturing Exceptions Explicitly with Sentry
07 - Sentry: Dashboard Overview and Issue Resolution Workflow
5:20
08 - How to Collect User Feedback with Sentry
09 - Sentry: Additional Options and APIs
10 - Error Monitoring Basics, Source Maps, and dSYMs
11 - How to Upload Source Maps and dSYMs with the Sentry Dart Plugin
12 - Sentry Setup Checklist
13 - How to Minimize Your Sentry Bill
14 - Error Monitoring: Wrap Up
15 - Request for Feedback

Module 5

Analytics with Mixpanel and Firebase Analytics

How to setup analytics in your Flutter client app, including: choosing an analytics provider, tracking events and screen views, enabling/disabling analytics, and some real-world examples.

01 - Intro to Analytics
02 - Comparison of Popular Analytics Providers
03 - Firebase Analytics vs Mixpanel
04 - Introduction to Event Tracking
05 - App Analytics: Requirements and Architecture Overview
06 - App Analytics: Implementation Details
07 - Tracking Custom Events
08 - Tracking Navigation Events
09 - Enabling or Disabling Analytics: Letting Users Choose
10 - App Analytics: Identify Users
11 - Mixpanel: Project Setup
12 - Mixpanel: Flutter Setup
13 - Mixpanel Dashboard Overview
5:34
14 - Mixpanel: Debugging and Other Useful Features
15 - Firebase Analytics: FlutterFire Recap
16 - Firebase Analytics: Flutter Setup
17 - Analytics Setup Checklist
18 - Analytics: Wrap Up
19 - Request for Feedback

Module 6

Force Update Strategies

How to implement different force update strategies depending on your app type and backend.

01 - Intro to Force Update
02 - Force Update with the Upgrader Package
03 - Introduction to Force Update with Remote Config
04 - The Force Update Helper package
05 - Force Update with a GitHub Gist
06 - Force Update with Firebase Remote Config
07 - Force Update with Dart Shelf
08 - Force Update Checklist
09 - Wrap Up
10 - Request for Feedback

Module 7

Asking for In-App Reviews

How and when to ask for reviews in your mobile app using the in_app_review package.

01 - How to Ask for In-App Reviews
02 - Showing the In-App Review Prompt with requestReview
03 - Showing the Review Prompt at the Right Time
04 - Asking for Reviews with openStoreListing
05 - In-App Review Checklist
06 - Wrap Up
07 - Request for Feedback

Module 8

Creating a Landing Page for Your App

How to create a simple landing page for your app and deploy it to GitHub pages. Also included: how to generate a Privacy Policy and the Terms of Use.

01 - Intro: do you need a Landing Page?
02 - Landing Page Template: Setup Guide
03 - Deploy your Website to GitHub Pages
04 - How to Generate the Privacy Policy and Terms of Use
05 - Adding the Website Links to the Settings Page
06 - Wrap Up
07 - Request for Feedback

Upcoming Modules

More modules are coming soon, covering app store submissions, release automation, and more.

01 - Coming Soon

Appendix 1

A Riverpod Primer

An introduction to the Riverpod package, including: providers and consumers, asynchronous providers, notifiers, dependency management, data caching, and additional techniques.

01 - Intro to Riverpod
02 - How to Manage Dependencies in Flutter
03 - Riverpod: Installation and Setup
04 - Introduction to Providers and Consumers
05 - The difference between ref.read and ref.watch
06 - Asynchronous Providers in Riverpod
07 - Passing Arguments to Providers (Families)
08 - Introduction to Riverpod Notifiers
09 - Asynchronous Notifiers in Riverpod
10 - Eager Provider Initialization and Usage with requireValue
11 - The Provider Lifecycle and when to use keepAlive
12 - Wrap Up
13 - Request for Feedback

Appendix 2

Common Problems and Solutions

Solutions to common problems including: version conflicts, upgrading dependencies, Cocoapods and Gradle issues.

01 - List of Common Problems and Solutions
02 - Android: Failed to transform core-for-system-modules.jar to match attributes errors with JDK 21
03 - Android Gradle version incompatible with Java version
04 - Android Gradle plugin requires Java 17 to run
05 - Your project is configured with Android NDK 23.1.7779620, but the following plugin(s) depend on a different Android NDK version
06 - App Stuck on the Splash Screen
07 - Fixing Build Issues - Nuclear Option 💣
08 - source value 8 is obsolete and will be removed in a future release
09 - Request for Feedback