абстрактный метод resolveSymbolicLinks
Определяет путь к объекту файловой системы относительно текущего рабочего каталога.
Разрешает все символические ссылки в пути и все сегменты пути .. и ..
resolveSymbolicLinks использует собственный API файловой системы операционной системы для разрешения пути: в Linux и OS X применяется функция realpath, а в Windows — функция GetFinalPathNameByHandle. Если путь не указывает на существующий объект файловой системы, resolveSymbolicLinks выбрасывает исключение FileSystemException.
В Windows сегменты .. разрешаются до разрешения символической ссылки, а на других платформах символические ссылки разрешаются в целевой объект до применения следующего за ними ...
Чтобы обеспечить одинаковое поведение на всех платформах, разрешайте сегменты .. перед вызовом resolveSymbolicLinks. Один из способов сделать это — использовать класс Uri:
var path = Uri.parse('.').resolveUri(Uri.file(input)).toFilePath();
if (path == '') path = '.';
var resolved = await File(path).resolveSymbolicLinks();
print(resolved); поскольку Uri.resolve удаляет сегменты ... Это обеспечит поведение, характерное для Windows.
Реализация
Future<String> resolveSymbolicLinks();
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-io/Directory/resolveSymbolicLinks.html