flutter如何配置多环境

“在Flutter项目中如何配置多环境?比如开发、测试和生产环境需要使用不同的API地址和配置参数,有没有比较规范的做法?目前是通过手动修改代码来切换环境,感觉很容易出错,求推荐最佳实践方案。”

2 回复

Flutter多环境配置可通过以下方式实现:

  1. 使用--dart-define参数传递环境变量;
  2. 创建不同环境的配置文件(如config_dev.dartconfig_prod.dart);
  3. 使用flutter_config插件管理环境变量;
  4. 结合Flavor和构建变体区分环境。

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


在Flutter中配置多环境可以通过以下几种方式实现:

1. 使用 --dart-define 参数(推荐)

配置方法

// 在 main.dart 中
void main() {
  const String environment = String.fromEnvironment('ENVIRONMENT');
  const String apiUrl = String.fromEnvironment('API_URL');
  
  runApp(MyApp(environment: environment, apiUrl: apiUrl));
}

运行命令

# 开发环境
flutter run --dart-define=ENVIRONMENT=dev --dart-define=API_URL=https://dev.api.com

# 生产环境
flutter run --dart-define=ENVIRONMENT=prod --dart-define=API_URL=https://api.com

# 构建时同样适用
flutter build apk --dart-define=ENVIRONMENT=prod --dart-define=API_URL=https://api.com

2. 使用 flutter_config 包

安装

dependencies:
  flutter_config: ^2.0.0

配置

创建 .env 文件:

ENVIRONMENT=dev
API_URL=https://dev.api.com

使用:

import 'package:flutter_config/flutter_config.dart';

String apiUrl = FlutterConfig.get('API_URL');
String environment = FlutterConfig.get('ENVIRONMENT');

3. 创建环境配置类

abstract class Environment {
  static const dev = 'dev';
  static const prod = 'prod';
}

class AppConfig {
  final String environment;
  final String apiUrl;
  
  AppConfig({required this.environment, required this.apiUrl});
  
  static AppConfig get current {
    const env = String.fromEnvironment('ENVIRONMENT', defaultValue: Environment.dev);
    
    switch (env) {
      case Environment.prod:
        return AppConfig(
          environment: Environment.prod,
          apiUrl: 'https://api.com',
        );
      default:
        return AppConfig(
          environment: Environment.dev,
          apiUrl: 'https://dev.api.com',
        );
    }
  }
}

4. 在 pubspec.yaml 中配置脚本

scripts:
  dev: flutter run --dart-define=ENVIRONMENT=dev --dart-define=API_URL=https://dev.api.com
  prod: flutter run --dart-define=ENVIRONMENT=prod --dart-define=API_URL=https://api.com

运行:flutter pub run dev

推荐使用第一种方法,因为它不需要额外依赖,且支持所有构建方式。

回到顶部