flutter如何切换正式环境和测试环境

在Flutter项目中,如何快速切换正式环境和测试环境?目前每次打包都需要手动修改API地址和配置参数,感觉很麻烦。有没有好的方案可以实现环境一键切换?希望能支持不同环境的差异化配置,比如API地址、应用图标、应用名称等。最好能给出具体的实现方法和示例代码。

2 回复

Flutter中可通过配置不同构建方案切换环境。常用方法:

  1. 使用–dart-define参数:
flutter run --dart-define=ENV=prod
  1. 在代码中通过环境变量判断:
const env = String.fromEnvironment('ENV');
bool isProd = env == 'prod';
  1. 配合flavor配置不同环境参数。

更多关于flutter如何切换正式环境和测试环境的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中切换正式环境和测试环境,可以通过以下几种方式实现:

1. 使用编译变量(–dart-define)

在启动应用时通过命令行传递环境参数:

# 测试环境
flutter run --dart-define=ENV=dev

# 正式环境
flutter run --dart-define=ENV=prod

在代码中读取环境配置:

const env = String.fromEnvironment('ENV', defaultValue: 'dev');

class Config {
  static String get baseUrl {
    switch (env) {
      case 'prod':
        return 'https://api.example.com';
      case 'dev':
        return 'https://dev-api.example.com';
      default:
        return 'https://dev-api.example.com';
    }
  }
}

2. 使用配置文件

创建不同环境的配置文件:

// config.dart
class Config {
  static String baseUrl = 'https://dev-api.example.com';
}

// config_prod.dart
class ConfigProd {
  static String baseUrl = 'https://api.example.com';
}

通过main.dart入口切换:

import 'config.dart' if (dart.library.io) 'config_prod.dart';

void main() {
  runApp(MyApp());
}

3. 使用环境变量

在启动时设置环境变量:

export API_BASE_URL="https://api.example.com"
flutter run

在代码中读取:

String baseUrl = const String.fromEnvironment('API_BASE_URL');

4. 使用flutter_dotenv包

添加依赖:

dependencies:
  flutter_dotenv: ^5.0.2

创建.env文件:

BASE_URL=https://dev-api.example.com

在代码中使用:

await dotenv.load(fileName: ".env");
String baseUrl = dotenv.get('BASE_URL');

推荐方案:

建议使用第一种--dart-define方式,因为:

  • 编译时确定环境,避免运行时错误
  • 支持AOT编译
  • 与CI/CD流程集成方便

使用示例:

class EnvironmentConfig {
  static const env = String.fromEnvironment('ENV');
  static const bool isProduction = env == 'prod';
  static const String apiUrl = isProduction 
      ? 'https://api.example.com'
      : 'https://dev-api.example.com';
}

通过这种方式,可以轻松在不同环境间切换配置参数。

回到顶部