Flutter 多环境

问题描述 投票:0回答:2

大家好, 我需要一些有关颤振中多环境的帮助。

预期结果:

  • 多环境(如生产/开发/登台)
  • 易于更改且视觉上分离(可以是 3 个差异或一个结构良好的文件)
  • 变量可以在本机代码中使用
  • 支持Android Studioflutter run
  • 可以从 Xcode
  • 运行

很简单,对吧? )不!

我尝试过的:

  • flutter_dotenv - 不支持本机代码
  • flutter_config - 这非常好,但是要使用 env 运行 flutter,你应该编写
    ENFILE=.env.dev flutter run ...
    ,因此通过这种方法,你会失去在 android studio 中运行 Flutter 控制台的优势,并且 flutter 应用程序不会自动重新运行
  • --dart-define=
    方法 - 长行运行命令,难以阅读,难以更改,
    flutter run
    flutter build
  • 的代码重复

看起来我错过了一些东西,我来自react-native ant,所有这些问题都由

react-native-config
package.json
中的命令解决,但在flutter中我没有看到像包json中那样的预定义命令的方法(仅
 Run/Debug Configurations
)。但是 flutter run 不支持 env 文件,而只支持 sh 脚本可以使用 ENFILE 运行,但它们不会触发 flutter run 控制台。

我将感谢您的帮助))

flutter environment-variables
2个回答
1
投票

使用 android 运行配置的可能解决方案。

接下来是架构:

  • 创建环境文件
  • 创建不同的运行 Android 配置(开发、阶段、产品)
  • 将 Android 运行配置保存到项目中
  • 编写脚本以从 .env 文件更新 android 运行配置

此模式满足除“可以从 Xcode 运行”之外的所有要求。一般来说,仍然可以从 Xcode 运行项目,但要将 Xcode 内的配置更改为其他环境,仍然需要从 android 运行配置运行项目。

还有更多信息和代码示例:


0
投票

是的,你确实错过了 flutter 1.17 之前的一些东西,你可以使用编译时变量,即通过

--dart-define=

 $ flutter run --dart-define=SOME_VAR=SOME_VALUE --dart-define=OTHER_VAR=OTHER_VALUE

class EnvironmentConfig {
  static const SOME_VAR = String.fromEnvironment('SOME_VAR');
  static const OTHER_VAR = String.fromEnvironment('OTHER_VAR');
}

请注意,任何带有 URL 的内容都与 Android 和 ios 不同,并且在 ios 上你有更多的限制来让它完全正确。

后续参考文献是:

https://medium.com/@tatsu.ukraine/what-you-should-know-before-you-upgrade-flutter-in-your-project-with-compile-time-variables-3ec3d2e9ba79

https://itnext.io/flutter-1-17-no-more-flavors-no-more-ios-schemas-command-argument-that-solves-everything-8b145ed4285d

© www.soinside.com 2019 - 2024. All rights reserved.