如何知道flutter应用程序是否处于生产模式?

Bai*_*kar 6 release production-environment dev-to-production dart flutter

我正在使用 flutter 包配置 API 端点dio!我有两个 API 端点:一个用于开发,另一个用于生产。我希望我的diobaseURL 在开发和生产端点之间自动切换。

就像这样

Dio(
  baseURL: isProduction ? productionBaseURL : developmentBaseURL
  ......
      );
Run Code Online (Sandbox Code Playgroud)

如何知道我的应用程序是否在 Dart 生产环境中?

lep*_*sch 7

只需检查kReleaseMode全局常量即可。如果true应用程序是在发布模式下编译的。

或者,我建议此信息来自环境变量,因此它遵循十二因素应用程序(配置符号)。要获取它并检查,请执行以下操作。

例如IS_PRODUCTION系统环境变量:

final isProduction = Platform.environment['IS_PRODUCTION'] == '1';
Run Code Online (Sandbox Code Playgroud)

或者,获取dart-defines编译时环境变量:

const isProduction = String.fromEnvironment('IS_PRODUCTION') == '1';
Run Code Online (Sandbox Code Playgroud)

有 2 种设置方法dart-define

  1. flutter run --dart-define=IS_PRODUCTION=1, 或者;

  2. flutter build <bundle> --dart-define=IS_PRODUCTION=1;

    其中<bundle>可以是:aarapkappbundlebundle, web、 或windows

请注意,它dart-define被编译到应用程序本身中。这就是为什么他们接受const声明。从命令行文档中可以看出:

其他键值对将作为String.fromEnvironmentbool.fromEnvironmentint.fromEnvironmentdouble.fromEnvironment构造函数中的常量提供。


Ank*_*rya 1

用户可以使用 flutter 中的flavor 为您的应用程序设置两种不同的环境,一种用于测试,一种用于生产。你可以参考这个官方文档。