withExtension static method

String withExtension(
  1. String? filename,
  2. String extension, {
  3. String fallback = defaultFallback,
  4. int maxLength = defaultMaxLength,
})

Implementation

static String withExtension(
  String? filename,
  String extension, {
  String fallback = defaultFallback,
  int maxLength = defaultMaxLength,
}) {
  final safeExtension = _sanitizeExtension(extension);
  if (safeExtension.isEmpty) {
    return sanitize(filename, fallback: fallback, maxLength: maxLength);
  }

  final suffix = '.$safeExtension';
  final raw = filename?.trim();
  final hasSuffix =
      raw != null && raw.toLowerCase().endsWith(suffix.toLowerCase());
  final stemInput = hasSuffix
      ? raw.substring(0, raw.length - suffix.length)
      : raw;
  final safeFallback = _fallbackStem(fallback, suffix);
  final stem = _sanitizeStem(stemInput, safeFallback);
  final limit = maxLength < suffix.length + 1 ? suffix.length + 1 : maxLength;
  final safeStem = _limitLength(
    stem,
    limit - suffix.length,
    fallback: safeFallback,
  );
  return '$safeStem$suffix';
}