copyWith method

BuildArguments copyWith(
  1. Arguments? data
)

Creates a copy of this Arguments instance with selective updates.

This method provides immutable update capabilities by creating a new Arguments instance with values from the provided data parameter, falling back to current instance values where data doesn't specify new values. This supports configuration inheritance and modification.

Parameters

  • data - Optional Arguments instance containing updated values

Returns

Returns a new BuildArguments instance (as Arguments) with:

  • Values from data where specified
  • Current instance values where data is null or doesn't specify
  • All original configuration preserved for unspecified parameters

Example

final baseArgs = Arguments(variables, binaryType: 'apk', buildMode: 'debug');
final releaseArgs = Arguments(variables, buildMode: 'release');

// Create release version with base configuration
final updatedArgs = baseArgs.copyWith(releaseArgs);
// Result: APK binary type with release build mode

Implementation

BuildArguments copyWith(Arguments? data) {
  return Arguments(
    data?.variables ?? variables,
    buildMode: data?.buildMode ?? buildMode,
    binaryType: data?.binaryType ?? binaryType,
    customArgs: data?.customArgs ?? customArgs,
    target: data?.target ?? target,
    flavor: data?.flavor ?? flavor,
    dartDefines: data?.dartDefines ?? dartDefines,
    dartDefinesFile: data?.dartDefinesFile ?? dartDefinesFile,
    buildName: data?.buildName ?? buildName,
    buildNumber: data?.buildNumber ?? buildNumber,
    pub: data?.pub ?? pub,
    output: data?.output ?? output,
    buildSourceDir: data?.buildSourceDir ?? buildSourceDir,
  );
}