fix file transfer load/save config, opt breadCrumbScroll
This commit is contained in:
parent
efc9f312e9
commit
5b9a76f8a5
@ -93,6 +93,7 @@ class _FileManagerPageState extends State<FileManagerPage>
|
||||
Wakelock.enable();
|
||||
}
|
||||
debugPrint("File manager page init success with id ${widget.id}");
|
||||
model.onDirChanged = breadCrumbScrollToEnd;
|
||||
// register location listener
|
||||
_locationNodeLocal.addListener(onLocalLocationFocusChanged);
|
||||
_locationNodeRemote.addListener(onRemoteLocationFocusChanged);
|
||||
@ -100,17 +101,18 @@ class _FileManagerPageState extends State<FileManagerPage>
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
model.onClose();
|
||||
_ffi.close();
|
||||
_ffi.dialogManager.dismissAll();
|
||||
if (!Platform.isLinux) {
|
||||
Wakelock.disable();
|
||||
}
|
||||
Get.delete<FFI>(tag: 'ft_${widget.id}');
|
||||
_locationNodeLocal.removeListener(onLocalLocationFocusChanged);
|
||||
_locationNodeRemote.removeListener(onRemoteLocationFocusChanged);
|
||||
_locationNodeLocal.dispose();
|
||||
_locationNodeRemote.dispose();
|
||||
model.onClose().whenComplete(() {
|
||||
_ffi.close();
|
||||
_ffi.dialogManager.dismissAll();
|
||||
if (!Platform.isLinux) {
|
||||
Wakelock.disable();
|
||||
}
|
||||
Get.delete<FFI>(tag: 'ft_${widget.id}');
|
||||
_locationNodeLocal.removeListener(onLocalLocationFocusChanged);
|
||||
_locationNodeRemote.removeListener(onRemoteLocationFocusChanged);
|
||||
_locationNodeLocal.dispose();
|
||||
_locationNodeRemote.dispose();
|
||||
});
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@ -636,7 +638,6 @@ class _FileManagerPageState extends State<FileManagerPage>
|
||||
}),
|
||||
IconButton(
|
||||
onPressed: () {
|
||||
breadCrumbScrollToEnd(isLocal);
|
||||
model.refresh(isLocal: isLocal);
|
||||
},
|
||||
splashRadius: kDesktopIconButtonSplashRadius,
|
||||
@ -999,9 +1000,7 @@ class _FileManagerPageState extends State<FileManagerPage>
|
||||
}
|
||||
|
||||
openDirectory(String path, {bool isLocal = false}) {
|
||||
model.openDirectory(path, isLocal: isLocal).then((_) {
|
||||
breadCrumbScrollToEnd(isLocal);
|
||||
});
|
||||
model.openDirectory(path, isLocal: isLocal);
|
||||
}
|
||||
|
||||
void handleDragDone(DropDoneDetails details, bool isLocal) {
|
||||
|
@ -32,15 +32,17 @@ class _FileManagerPageState extends State<FileManagerPage> {
|
||||
.showLoading(translate('Connecting...'), onCancel: closeConnection);
|
||||
});
|
||||
gFFI.ffiModel.updateEventListener(widget.id);
|
||||
model.onDirChanged = (_) => breadCrumbScrollToEnd();
|
||||
Wakelock.enable();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
model.onClose();
|
||||
gFFI.close();
|
||||
gFFI.dialogManager.dismissAll();
|
||||
Wakelock.disable();
|
||||
model.onClose().whenComplete(() {
|
||||
gFFI.close();
|
||||
gFFI.dialogManager.dismissAll();
|
||||
Wakelock.disable();
|
||||
});
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@ -309,7 +311,6 @@ class _FileManagerPageState extends State<FileManagerPage> {
|
||||
}
|
||||
if (entries[index].isDirectory || entries[index].isDrive) {
|
||||
model.openDirectory(entries[index].path);
|
||||
breadCrumbScrollToEnd();
|
||||
} else {
|
||||
// Perform file-related tasks.
|
||||
}
|
||||
|
@ -42,6 +42,9 @@ class FileModel extends ChangeNotifier {
|
||||
/// JobTable <jobId, JobProgress>
|
||||
final _jobTable = List<JobProgress>.empty(growable: true).obs;
|
||||
|
||||
/// `isLocal` bool
|
||||
Function(bool)? onDirChanged;
|
||||
|
||||
RxList<JobProgress> get jobTable => _jobTable;
|
||||
|
||||
bool get isLocal => _isSelectedLocal;
|
||||
@ -354,10 +357,12 @@ class FileModel extends ChangeNotifier {
|
||||
await bind.sessionLoadLastTransferJobs(id: '${parent.target?.id}');
|
||||
}
|
||||
|
||||
onClose() {
|
||||
Future<void> onClose() async {
|
||||
parent.target?.dialogManager.dismissAll();
|
||||
jobReset();
|
||||
|
||||
onDirChanged = null;
|
||||
|
||||
// save config
|
||||
Map<String, String> msgMap = {};
|
||||
|
||||
@ -367,7 +372,7 @@ class FileModel extends ChangeNotifier {
|
||||
msgMap["remote_show_hidden"] = _remoteOption.showHidden ? "Y" : "";
|
||||
final id = parent.target?.id ?? "";
|
||||
for (final msg in msgMap.entries) {
|
||||
bind.sessionPeerOption(id: id, name: msg.key, value: msg.value);
|
||||
await bind.sessionPeerOption(id: id, name: msg.key, value: msg.value);
|
||||
}
|
||||
_currentLocalDir.clear();
|
||||
_currentRemoteDir.clear();
|
||||
@ -421,6 +426,7 @@ class FileModel extends ChangeNotifier {
|
||||
_currentRemoteDir = fd;
|
||||
}
|
||||
notifyListeners();
|
||||
onDirChanged?.call(isLocal);
|
||||
} catch (e) {
|
||||
debugPrint("Failed to openDirectory $path: $e");
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user