instantiateCodec method Null safety

Future<Codec> instantiateCodec(
  1. {int? targetWidth,
  2. int? targetHeight}
)

Creates a Codec object which is suitable for decoding the data in the buffer to an Image.

If only one of targetWidth or targetHeight are specified, the other dimension will be scaled according to the aspect ratio of the supplied dimension.

If either targetWidth or targetHeight is less than or equal to zero, it will be treated as if it is null.

Implementation

Future<Codec> instantiateCodec({int? targetWidth, int? targetHeight}) async {
  if (targetWidth != null && targetWidth <= 0) {
    targetWidth = null;
  }
  if (targetHeight != null && targetHeight <= 0) {
    targetHeight = null;
  }

  if (targetWidth == null && targetHeight == null) {
    targetWidth = width;
    targetHeight = height;
  } else if (targetWidth == null && targetHeight != null) {
    targetWidth = (targetHeight * (width / height)).round();
    targetHeight = targetHeight;
  } else if (targetHeight == null && targetWidth != null) {
    targetWidth = targetWidth;
    targetHeight = targetWidth ~/ (width / height);
  }
  assert(targetWidth != null);
  assert(targetHeight != null);

  final Codec codec = Codec._();
  _instantiateCodec(codec, targetWidth!, targetHeight!);
  return codec;
}