From beffe44cdb43b6d30218adc881800fb3c9238e98 Mon Sep 17 00:00:00 2001 From: Kingtous Date: Sat, 9 Jul 2022 11:27:59 +0800 Subject: [PATCH] fix: workaround for changing root disk on Windows --- flutter/lib/models/file_model.dart | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/flutter/lib/models/file_model.dart b/flutter/lib/models/file_model.dart index 1aecb41e3..c3d44f4a9 100644 --- a/flutter/lib/models/file_model.dart +++ b/flutter/lib/models/file_model.dart @@ -253,6 +253,13 @@ class FileModel extends ChangeNotifier { isLocal ? _localOption.showHidden : _remoteOption.showHidden; final isWindows = isLocal ? _localOption.isWindows : _remoteOption.isWindows; + // process /C:\ -> C:\ on Windows + if (currentIsWindows && path.length > 1 && path[0] == '/') { + path = path.substring(1); + if (path[path.length - 1] != '\\') { + path = path + "\\"; + } + } try { final fd = await _fileFetcher.fetchDirectory(path, isLocal, showHidden); fd.format(isWindows, sort: _sortStyle); @@ -272,7 +279,13 @@ class FileModel extends ChangeNotifier { } goToParentDirectory({bool? isLocal}) { - final parent = PathUtil.dirname(currentDir.path, currentIsWindows); + final currDir = isLocal != null ? isLocal ? currentLocalDir : currentRemoteDir : currentDir; + var parent = PathUtil.dirname(currDir.path, currentIsWindows); + // specially for C:\, D:\, goto '/' + if (parent == currDir.path && currentIsWindows) { + openDirectory('/', isLocal: isLocal); + return; + } openDirectory(parent, isLocal: isLocal); }