Files
flutter_server_box/lib/data/model/app/path_with_prefix.dart
2024-11-14 11:20:45 +08:00

48 lines
1.1 KiB
Dart

import 'package:fl_lib/fl_lib.dart';
final _seperator = Pfs.seperator;
/// It's used on platform's file system.
/// So use [Platform.pathSeparator] to join path.
class LocalPath {
final String _prefixPath;
String _path = _seperator;
String? _prePath;
String get path => _prefixPath + _path;
LocalPath(String prefixPath) : _prefixPath = _trimSuffix(prefixPath);
void update(String newPath) {
_prePath = _path;
if (newPath == '..') {
_path = _path.substring(0, _path.lastIndexOf(_seperator));
if (_path == '') {
_path = _seperator;
}
return;
}
if (newPath == _seperator) {
_path = _seperator;
return;
}
_path = _path.joinPath(newPath);
}
bool get canBack => path != '$_prefixPath$_seperator';
bool undo() {
if (_prePath == null || _path == _prePath) {
return false;
}
_path = _prePath!;
return true;
}
}
String _trimSuffix(String prefixPath) {
if (prefixPath.endsWith(_seperator)) {
return prefixPath.substring(0, prefixPath.length - 1);
}
return prefixPath;
}