build method

Future<BuildResult> build({
  1. required Map<String, dynamic> arguments,
  2. Map<String, String>? environment,
})

Implementation

Future<BuildResult> build({
  required Map<String, dynamic> arguments,
  Map<String, String>? environment,
}) async {
  final time = Stopwatch()..start();

  BuildConfig config = BuildConfig(arguments: arguments);
  List<String> buildArguments = [];
  for (String key in config.arguments.keys) {
    dynamic value = config.arguments[key];
    if (value == null || value is bool) {
      buildArguments.add('--$key');
    } else if (value is Map) {
      for (String subKey in value.keys) {
        buildArguments.addAll(['--$key', '$subKey=${value[subKey]}']);
      }
    } else {
      buildArguments.addAll(['--$key', value]);
    }
  }

  buildArguments.addAll([
    '--dart-define',
    'FLUTTER_BUILD_NAME=$appBuildName',
    '--dart-define',
    'FLUTTER_BUILD_NUMBER=$appBuildNumber',
  ]);

  ProcessResult processResult = await flutter.withEnv(environment).build(
    [buildSubcommand, ...buildArguments],
  );

  if (processResult.exitCode != 0) {
    throw BuildError('${processResult.stderr}');
  }

  return resultResolver.resolve(config)..duration = time.elapsed;
}