pathRelative function
Relative path from base to target. Roadmap #163.
Implementation
String pathRelative(String base, String target) {
final List<String> b = pathNormalize(base).split('/').where((String s) => s.isNotEmpty).toList();
final List<String> t = pathNormalize(
target,
).split('/').where((String s) => s.isNotEmpty).toList();
int i = 0;
while (i < b.length && i < t.length && b[i] == t[i]) {
i++;
}
final List<String> ups = List<String>.filled(b.length - i, '..');
final List<String> rest = t.sublist(i);
return pathJoin(<String>[...ups, ...rest]);
}