safeFilename function

String safeFilename(
  1. String filename, {
  2. String separator = '-',
  3. bool withSpaces = false,
  4. bool lowercase = false,
  5. bool onlyAlphanumeric = false,
})

Implementation

String safeFilename(
  String filename, {
  String separator = '-',
  bool withSpaces = false,
  bool lowercase = false,
  bool onlyAlphanumeric = false,
}) {
  final List<String> reservedCharacters = [
    '?',
    ':',
    '"',
    '*',
    '|',
    '/',
    '\\',
    '<',
    '>',
    '+',
    '[',
    ']',
  ];

  final RegExp onlyAlphanumericRegex = RegExp(r'''[^a-zA-Z0-9\s.]''');

  String returnString = filename;
  if (onlyAlphanumeric) {
    returnString = returnString.replaceAll(onlyAlphanumericRegex, '');
  } else {
    for (var c in reservedCharacters) {
      returnString = returnString.replaceAll(c, separator);
    }
  }
  if (!withSpaces) returnString = returnString.replaceAll(' ', separator);
  return lowercase ? returnString.toLowerCase() : returnString;
}