Flutter 如何在Flatter上获得风味名称?
是否有可能获得风味名称颤振侧?适用于android和ios build.gradleFlutter 如何在Flatter上获得风味名称?,flutter,dart,Flutter,Dart,是否有可能获得风味名称颤振侧?适用于android和ios build.gradle flavorDimensions "app" productFlavors { dev { dimension "app" versionCode 2 versionName "1.0.0" } qa { dimension "app" applicationId "com.demo.qa"
flavorDimensions "app"
productFlavors {
dev {
dimension "app"
versionCode 2
versionName "1.0.0"
}
qa {
dimension "app"
applicationId "com.demo.qa"
versionCode 3
versionName "1.0.2"
}
}
在《颤栗》中没有“味道”这样的东西。您无法知道运行颤振应用程序的底层平台风格。在颤振中,只有构建模式:
- 在调试模式下,应用程序设置为在物理设备、模拟器或模拟器上进行调试
- 在发布模式下,您可以设置应用程序进行部署
- 在配置文件模式下,一些调试功能被保留下来,足以配置应用程序的性能
flatter run
来构建应用程序,然后使用--debug
、--release
或--profile
标志来选择要运行的模式
如果您希望在不同的条件下执行不同的代码,IMO的最佳方法是。中描述的方法,只要每种口味都有不同的packageName,您可以这样做:
enum EnvironmentType { dev, qa }
class Environment {
EnvironmentType current;
Environment() {
PackageInfo.fromPlatform().then((PackageInfo packageInfo) {
switch (packageInfo.packageName) {
case "com.demo.qa":
current = EnvironmentType.qa;
break;
default:
current = EnvironmentType.dev;
}
});
}
}
没有一种简单的方法可以知道味道名称,但是我建议您使用一个环境变量,例如从中加载 file.env
FLAVOR=dev
文件main.dart
void main() async {
await DotEnv().load('.env');
final flavor = DotEnv().env['FLAVOR'];
String baseUrl;
if (flavor == 'dev') {
baseUrl = 'https://dev.domain.com';
} else if (flavor == 'qa') {
baseUrl = 'https://qa.domain.com';
} else {
throw UnimplementedError('Invalid FLAVOR detected');
}
}
这将允许您(作为开发人员)轻松更改应用程序的行为,并从不同的环境中切换seamlessy。您可以使用来自的解决方案
flatterbuildapk--flavor=paid--dart define=app.flavor=paid
conststringflavor=String.fromEnvironment('app.flavor');
void main(){
印刷品(风味);
}
这将在运行时打印“付费”
优点是变量是const
,这使您能够更快地访问变量。
缺点是必须为构建设置键值对。获取风味名称的主要目的是什么?根据dart代码中的味道名称使用不同的配置?或者你只是想得到口味名称?这正是我使用的。在构建android时效果非常好,因为您可以使用shell命令传递它。在从xcode构建归档文件时,仍然需要知道如何通过dart define。在下一个Flatter稳定版本>
1.24.0-6.0
和更高版本中,您可以通过运行Flatter build ipa--flavor=paid--dart define=app.flavor=paid
来创建归档文件。我还没有测试过,但它可能会工作。