flutter - 如何知道 flutter app 是否处于生产模式?

标签 flutter dart release production-environment dev-to-production

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

就这样

Dio(
  baseURL: isProduction ? productionBaseURL : developmentBaseURL
  ......
      );

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

最佳答案

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

或者,我建议此信息来自环境变量,以便它遵循 The Twelve-Factor App 中的项目符号之一。 (Config 项目符号)。要获取并检查,请执行以下操作。

例如,IS_PRODUCTION系统环境变量:

final isProduction = Platform.environment['IS_PRODUCTION'] == '1';

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

const isProduction = String.fromEnvironment('IS_PRODUCTION') == '1';

有两种方法可以设置 dart-define :

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

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

    在哪里<bundle>可以是:aar , apk , appbundle , bundle, web , 或 windows .

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

Additional key-value pairs that will be available as constants from the String.fromEnvironment, bool.fromEnvironment, int.fromEnvironment, and double.fromEnvironment constructors.

关于flutter - 如何知道 flutter app 是否处于生产模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73039730/

相关文章:

android - 预加载 Assets 图像抖动

dart - Flutter:自定义 ExpansionTile

android - Gradle - 默认构建类型总是调试

c++ - 在 VS2010 中未经调试运行时发布版本不起作用

带有音频播放器的 Flutter Bloc

php - 如何检查用户是否通过php和mysql登录?

visual-studio-code - 如何为 Flutter 模拟器的 Visual Studio Code 设置设备

firebase - 找不到 com.google.firebase :firebase-ml-vision

flutter - 没有用于TabBarView抖动的TabController

python - 为什么是Python 3.6.1。 pyenv中不可用?