Flutter 实现根据环境加载不一样配置

以前作后端开发的时候,无论是什么语言或者框架,都习惯根据不一样环境加载不一样的开发配置,好比本地开发的时候,加载local.env配置,部署开发环境的时候加载develop.env配置,一般经过一个环境变量来决定加载相应的配置。最近在开发一款Flutter App,我也但愿App在不一样的环境中加载不一样的配置文件,实现的方式以下,若有不妥还请指出。javascript

首先在lib创建多个main.dart,好比main_local.dart表示本地开发运行时执行的入口文件,main_develop.dartmain.dart分别表示开发环境和生产环境:java

lib/
├── api/
├── main.dart
├── main_develop.dart
├── main_local.dart
├── models/
├── pages/
├── utils/
└── widgets/

这样若是咱们运行在本地开发,那么执行后端

flutter run -t lib/main_local.dart

那么如何在执行本地开发环境的时候来调用本地开发的配置呢?其实很简单,我来定义配置文件,好比utils/config.dartapi

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:async

import 'package:xxx/utils/config.dart';
...
static request(String method, path,
      {Map<String, dynamic> data, header}) async {
    options.baseUrl = Config.apiHost; //这里获取到http://local.yuanxuxu.com
       ...
    return response;
  }

这样就是实现了不一样环境对于获取不一样的配置了,若是咱们如今要编译打包一个apk文件用于分发到手机上用于测试预览使用,那么能够打包一个调用develop环境配置的apk文件:函数

flutter build apk -t lib/main_develop.dart

打包生产配置的安装包也是同样的,直接build main.dart 文件。测试

转载请注明: 转载自Ryan是菜鸟 | LNMP技术栈笔记ui

若是以为本篇文章对您十分有益,何不 打赏一下spa

谢谢打赏

本文连接地址: Flutter 实现根据环境加载不一样配置

相关文章
相关标签/搜索