Flutter flavors如何配置

我在使用Flutter开发应用时需要配置不同的环境变量,比如开发环境和生产环境的API地址不同。看到官方文档提到可以用flavors实现,但不太清楚具体该怎么配置?能否详细说明如何在Flutter项目中设置flavors,以及如何在代码中区分不同环境?

2 回复

Flutter flavors可通过配置android/app/build.gradleios/Podfile实现。在android中定义productFlavors,在ios中设置schemetarget。使用--flavor参数运行不同环境,如flutter run --flavor dev

更多关于Flutter flavors如何配置的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


Flutter flavors 用于为不同环境(如开发、测试、生产)配置独立的构建版本。以下是配置步骤:

1. Android 配置

android/app/build.gradle

android {
    flavorDimensions "environment"
    productFlavors {
        dev {
            dimension "environment"
            applicationIdSuffix ".dev"
            resValue "string", "app_name", "App Dev"
        }
        prod {
            dimension "environment"
            resValue "string", "app_name", "App Prod"
        }
    }
}

2. iOS 配置

ios/Runner.xcworkspace 中:

  • 在 Xcode 中复制 Runner Scheme,重命名为 dev/prod
  • Build Settings 中为每个 Scheme 设置不同的 PRODUCT_BUNDLE_IDENTIFIER(如:com.example.dev)

3. Flutter 配置

lib/main.dart

void main() {
  String environment = const String.fromEnvironment('ENVIRONMENT', defaultValue: 'dev');
  
  runApp(MyApp(environment: environment));
}

4. 运行命令

# Android
flutter run --flavor dev -t lib/main_dev.dart
flutter build apk --flavor dev -t lib/main_dev.dart

# iOS
flutter run --flavor dev -t lib/main_dev.dart
flutter build ipa --flavor dev -t lib/main_dev.dart

5. 环境配置文件

创建多个入口文件(如 main_dev.dartmain_prod.dart),通过 --target 指定不同配置:

// main_dev.dart
void main() {
  setupEnvironment(Environment.dev);
  runApp(MyApp());
}

关键点:

  • Android:通过 build.gradle 定义 flavors
  • iOS:需手动配置 Xcode Schemes
  • Flutter:使用编译变量或不同入口文件区分环境
  • 可配合 .env 文件管理不同环境的 API 地址等参数

通过 flavors 可轻松管理多环境配置,避免手动修改代码。

回到顶部