Flutter 如何快速切换生产和测试环境

方式一:判断是否是生产环境

在实际我们需要根据本地、测试或生产环境配置不同的运行参数,通常是配置接口地址。一种做法是通过判断环境是不是生产环境来配置。

if(bool.fromEnvironment('dart.vm.product')) {

    //生产环境参数配置

} else {

    //开发环境参数配置

}

方式二:使用配置文件

上述的方式有个缺陷是如果想要调试时切换到生产环境时需要改代码,而且如果有超过2个环境的时候就不好操作了。嗯,有点 Low!

其实,在 Flutter 调试运行的时候,可以指定入口文件,例如:

flutter run -t lib/main_local.dart

flutter run -t lib/main_dev.dart

flutter run -t lib/main.dart

在打包时也可以指定打包的入口文件,命令如下:

flutter build apk -t lib/main_local.dart

flutter build apk -t lib/main_dev.dart

flutter build apk

针对这个特性我们可以使用不同的 main文件来加载对应环境的参数。首先我们建立一个环境变量配置类,分布对应生产(Product)、测试环境(Development)和本地(Local),根据不同的环境枚举返回不同的接口地址:

enum Env {

  Product,

  Development,

  Local

}

class EnvConfig {

  static Env env;

  static String getBaseUrl(Env env) {

    switch (env) {

      case Env.Product:

        return "https://product-api.host.com/";

      case Env.Development:

        return "http://dev-api.host.com/";

      case Env.Local:

       return "http://localhost/api";

      default:

        return "http://localhost/api";

    }

  }

}

然后根据环境不同定义不同的 main 入口文件,在该文件的 main 方法中配置不同的环境参数。

// main_dev.dart

void main() {

  runApp(MyApp());

  CookieManager.instance.initCookie();

  HttpUtil.setBaseUrl(EnvConfig.getBaseUrl(Env.Development));

}

// main.dart

void main() {

  runApp(MyApp());

  CookieManager.instance.initCookie();

  HttpUtil.setBaseUrl(EnvConfig.getBaseUrl(Env.Product));

}

之后就可以使用上述的命令运行或者打包对应环境的应用了。

 "version": "0.2.0",

    "configurations": [

        {

            "name": "XiaoHuiManager",

            "request": "launch",

            "type": "dart",

            "program": "lib/main_dev.dart",

            // "flutterMode": "release",

            // "flutterMode": "profile"

        },

        {

            "name": "XiaoHuiManager",

            "request": "launch",

            "type": "dart",

            "program": "lib/main.dart",

            // "flutterMode": "release",

            // "flutterMode": "profile"

        }

    ]

在调试的时候,选择不同的配置名称就可以指定调试时的入口文件,例如选择 Dev 开启调试后,会在控制台打印出:

Launching lib/main_dev.dart on iPhone 11 Pro in debug mode...

从而实现我们调试不同环境的目的。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容