首先在lib
建立多个main.dart
,比如main_local.dart
表示本地开发运行时执行的入口文件,main_develop.dart
和main.dart
分别表示开发环境和生产环境:
lib/
├── api/
├── main.dart
├── main_develop.dart
├── models/
├── pages/
├── utils/
└── widgets/
这样如果我们运行在本地开发,那么执行
flutter run -t lib/main_local.dart
那么如何在执行本地开发环境的时候来调用本地开发的配置呢?其实很简单,我来定义配置文件,比如utils/config.dart
enum Env {
PROD,
DEV,
LOCAL,
}
class Config {
static Env env;
static String get apiHost {
switch (env) {
case Env.PROD:
return "http://yuanxuxu.com";
case Env.DEV:
return "http://develop.yuanxuxu.com";
case Env.LOCAL:
default:
return "http://local.yuanxuxu.com";
}
}
}
其中Env
就是一个环境变量,比如我们要获取api请求的地址,那么根据环境变量来获取不同的请求地址,接下来我们只要在运行的入口函数main中定义我们当前运行的环境变量,在main_local.dart
中定义:
import 'package:xxx/utils/config.dart';
void main() {
Config.env = Env.LOCAL; //设定运行环境的环境变量
runApp(new MaterialApp(
...
));
本地开发环境的话我们就获取到http://local.yuanxuxu.com
:
HttpUtil._internal(String cookie) {
覆盖参数
options = new BaseOptions(
//请求基地址,可以包含子路径
// baseUrl: AppUrls.BASE_HOME_URL,
baseUrl:Config.apiHost ,
这样就是实现了不同环境对于获取不同的配置了,如果我们现在要编译打包一个apk文件用于分发到手机上用于测试预览使用,那么可以打包一个调用develop环境配置的apk文件:
flutter build apk -t lib/main_develop.dart
打包生产配置的安装包也是一样的,直接build main.dart 文件。