flutter如何切换正式环境和测试环境
在Flutter项目中,如何快速切换正式环境和测试环境?目前每次打包都需要手动修改API地址和配置参数,感觉很麻烦。有没有好的方案可以实现环境一键切换?希望能支持不同环境的差异化配置,比如API地址、应用图标、应用名称等。最好能给出具体的实现方法和示例代码。
2 回复
Flutter中可通过配置不同构建方案切换环境。常用方法:
- 使用–dart-define参数:
flutter run --dart-define=ENV=prod
- 在代码中通过环境变量判断:
const env = String.fromEnvironment('ENV');
bool isProd = env == 'prod';
- 配合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';
}
通过这种方式,可以轻松在不同环境间切换配置参数。

