多环境测试/部署是很多应用的需求,在Flutter中又是如何实现的?
在网上没找到好的方案,到时发现Flutter默认使用main.dart
,也可以指定运行首页:
flutter run -t main1.dart",
flutter build apk -t main1.dart",
所以我决定这样做:
1. 在lib目录下创建如下目录和文件:
每个文件是如下类似内容:
import 'package:flutter/material.dart';
import '../main.dart';
import './config.dart';
void main() {
// 重新给环境变量赋值
Config.env = EnvModel(
env: EnumEnv.dev,
name: '开发版'
apiUrl: '开发接口地址'
);
runApp(MyApp());
}
2. 然后再创建一个Config.dart文件,内容如下:
import 'enum_env.dart';
import 'env_model.dart';
class Config {
static EnvModel env = EnvModel(
env: EnumEnv.local,
apiUrl: '',
name: '本地版',
); // 环境变量配置, 默认配置
}
3. 最后就可以这样操作了:
"run:prod": "flutter run -t lib/environments/prod_env.dart",
"build:md-test": "flutter build apk -t lib/environments/test_env.dart",
"build:md-prod": "flutter build apk -t lib/environments/prod_env.dart",
原理说明:
因为Config.env是静态变量,当默认运行main.dart
文件时,使用默认值,而运行prod_env.dart
等文件时,内部已经重置了Config.env的值。