How to use Flavor in Flutter and why it’s important for you.

Kicking off an active “articles journey” with a short one today!

Bilal Rehman
4 min readAug 6, 2024

In-case you don’t know, my name’s Bilal Rehman and I’m a senior Software Engineer @MSET, Dubai and also have taught Flutter to thousands of students globally (mainly in Pakistan and USA though).

A few of the thousands of successful students I’ve taught!x

Feel free to connect with me if you need any advice or wanna talk about Software Engineering! Now on to the article…

In modern app development

Managing different versions of an application is essential for targeting various environments, user groups, or market segments. These versions, known as “flavors,” allow developers to customize the app’s behavior, appearance, maintenance, enable or disable features for different app versions easily and configurations without maintaining multiple codebases.

Flavors enable efficient handling of different configurations for environments like development, staging, and production, ensuring each environment has its unique settings, API endpoints, and credentials. This reduces the risk of errors and enhances development and testing efficiency.

For example, your development version of the app might point to dev.api.myapp.com, while your production version points to api.myapp.com. Now instead of hardcoding these values and building the app manually for each environment, you can use flavors to supply these values as build-time configurations, increasing speed of the development process.

Achieving Flavors in Flutter Using flutter_flavorizr!

‘flutter_flavorizr’ simplifies the creation and management of multiple flavors in Flutter apps. It automates configuration process of both Android and iOS, helping developers to maintain a consistent configuration and minimize the time spent on manual setup. How do you do it? Well…

  • Step 1 — Install flutter_flavorizr

Add flutter_flavorizr to your pubspec.yaml file under dev_dependencies.

Step 1 — Install flutter_flavorizr
  • Step 2 — Configure Flavors

Create a new file named flavorizr.yaml and define the name of the flavors and run the flutter_flavorizr command to generate the necessary files and configurations.

Step 2 — Configure Flavors

This command creates appropriate files and directories for each flavor, including separate main.dart files and configuration files.

  • Step 3 — Accessing Flavor Configurations in Code

Access the flavor-specific configurations in your Flutter code using the FlavorConfig class.

Step 3 — Accessing Flavor Configurations in Code
  • Step 4 — Building and Running Flavors

Use the following commands to build and run a specific flavor:

flutter run - flavor development -t lib/main_development.dart
flutter run - flavor production -t lib/main_production.dart

And you’re done!

Why is it important for you?

When developing in a real-world environment, being fast and effective is necessary. Using flavors in Flutter offers several key advantages that make it essential for both developers and businesses.

  1. It streamlines the “Development Process”: Flavors let you maintain a single codebase while catering to multiple environments (development, staging, production) or market segments (free, premium). This reduces the complexity and overhead of managing separate codebases for each version of your app.
  2. It enhances testing & QA: Flavors enable you to create specific configurations for different testing scenarios. You can have a flavor that mimics the production environment but uses a staging API. This ensures your QA team can test the app in conditions that closely resemble the actual production environment!
  3. Eases the customization: Flavors make it easy to enable or disable features based on the target audience or market. For example, you can have a flavor with additional features for premium users while keeping a simpler version for free users.
  4. Super simplified Deployment & Configuration: Managing different configurations such as API endpoints, theme settings, or 3rd-party service credentials becomes efficient with flavors. By defining these settings in a centralized configuration file, you lower risk of errors and ensure consistency across environments.
  5. Development Speed++: Tools like flutter_flavorizr significantly reduce the manual effort required to setup and manage multiple flavors. This allows developers to focus more on CODING!
  6. Futureproofing: As an app grows, the need to support additional environments or market segments come up. Using flavors from the outset makes your app’s architecture more scalable and adaptable in the long run.

Thank you for reading! You’ve now successfully flavorized your Flutter project in just a few easy steps. For more in-depth customization options, you can also customize it to your own scenarios. Happy coding!

Follow for more Software Engineering tips and tricks!

Wanna learn how to use Envied in Flutter? Click here!

I (try to) reply to every DM I get!

--

--

Bilal Rehman
Bilal Rehman

Written by Bilal Rehman

Mentored 1000's of Careers | Providing Software Consultancy | Sr. Software Engineer | Flutter Expert

No responses yet