首先在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 文件。