registerShaderBundleDataAsset function
ShaderBundleBuildResult?
registerShaderBundleDataAsset({
- required BuildInput buildInput,
- required BuildOutputBuilder buildOutput,
- required Uri outputBundleFile,
- required String legacyAssetKey,
- required ShaderBundleAssetMode assetMode,
- String? dataAssetName,
Registers outputBundleFile as a DataAsset when assetMode allows it.
Returns the emitted asset metadata, or null when assetMode falls back to
legacy output because data assets are not available.
Implementation
ShaderBundleBuildResult? registerShaderBundleDataAsset({
required BuildInput buildInput,
required BuildOutputBuilder buildOutput,
required Uri outputBundleFile,
required String legacyAssetKey,
required ShaderBundleAssetMode assetMode,
String? dataAssetName,
}) {
if (assetMode == ShaderBundleAssetMode.legacyOnly) {
return null;
}
final dataAssetsAvailable = buildInput.config.buildDataAssets;
if (!dataAssetsAvailable) {
if (assetMode == ShaderBundleAssetMode.dataAssetsRequired) {
_throwDataAssetsUnavailable(legacyAssetKey);
}
return null;
}
final name =
dataAssetName ??
shaderBundleDataAssetName(legacyAssetKey.split('/').last);
final asset = DataAsset(
package: buildInput.packageName,
name: name,
file: outputBundleFile,
);
buildOutput.assets.data.add(asset);
return ShaderBundleBuildResult(
outputFile: outputBundleFile,
legacyAssetKey: legacyAssetKey,
dataAssetName: name,
dataAssetId: asset.id,
flutterAssetKey: flutterDataAssetKey(
package: buildInput.packageName,
name: name,
),
);
}