join static method

String join(
  1. String part1,
  2. String part2, [
  3. String? part3,
  4. String? part4,
  5. String? part5,
])

Joins path parts using the appropriate platform separator.

Implementation

static String join(
  String part1,
  String part2, [
  String? part3,
  String? part4,
  String? part5,
]) {
  final separator = Platform.isWindows ? r'\' : '/';

  String trimPart(String p) {
    var s = p;
    while (s.startsWith('/') || s.startsWith(r'\')) {
      s = s.substring(1);
    }
    while (s.endsWith('/') || s.endsWith(r'\')) {
      s = s.substring(0, s.length - 1);
    }
    return s;
  }

  var base = part1.endsWith('/') || part1.endsWith(r'\')
      ? part1.substring(0, part1.length - 1)
      : part1;

  final parts = [part2, part3, part4, part5].whereType<String>();
  for (final part in parts) {
    final trimmed = trimPart(part);
    if (trimmed.isNotEmpty) {
      base = '$base$separator$trimmed';
    }
  }
  return base;
}