Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何在Flatter上获得风味名称?_Flutter_Dart - Fatal编程技术网

Flutter 如何在Flatter上获得风味名称?

Flutter 如何在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"

是否有可能获得风味名称颤振侧?适用于android和ios

build.gradle

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
    
  • 访问Dart中的值:
  • 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
    来创建归档文件。我还没有测试过,但它可能会工作。