feat (SSH page): Added server sorting, search, and history features (#1097)

* feat (SSH page): Added server sorting, search, and history features

- Added sorting functionality to the SSH page, supporting sorting by name or date added
- Added a server search feature, allowing searches by name, username, or IP address
- Implemented a server access history feature, allowing users to view and clear the history
- Added persistent storage for sorting options in Settings
- Updated the multilingual files to support the new features

* fix(ssh/tab): Fixed an issue where tabs were not refreshed after sorting

Added _tabRN.notify() to refresh tabs after sorting, while also changing _TabBar from ConsumerWidget to StatelessWidget and fixing the sorting logic

* fix(ssh/tab): Fixed an issue where tabs were not refreshed after sorting

Added _tabRN.notify() to refresh tabs after sorting, while also changing _TabBar from ConsumerWidget to StatelessWidget and fixing the sorting logic

* fix(ssh): Fixed the sorting functionality and optimized the UI display

- Fixed performance issues caused by using `indexOf` during server sorting; switched to pre-built index mappings
- Optimized divider colors to use theme colors
- Removed unnecessary nested `Column` and `Expanded` structures
- Replaced hard-coded blue with theme colors
- Added error handling to display a snackbar
- Ensured all `ValueNotifier` instances are properly released upon disposal
This commit is contained in:
GT610
2026-04-02 14:46:50 +08:00
committed by GitHub
parent d79770e6cc
commit 1d3534242c
21 changed files with 730 additions and 32 deletions

View File

@@ -19,6 +19,11 @@ class _ListHistory {
}
List get all => _history;
void clear() {
_history.clear();
_box.put(_name, _history);
}
}
class _MapHistory {
@@ -44,13 +49,13 @@ class HistoryStore extends HiveStore {
static final instance = HistoryStore._();
/// Paths that user has visited by 'Locate' button
late final sftpGoPath = _ListHistory(box: box, name: 'sftpPath');
late final sftpLastPath = _MapHistory(box: box, name: 'sftpLastPath');
late final sshCmds = _ListHistory(box: box, name: 'sshCmds');
/// Notify users that this app will write script to server to works properly
late final sshServerHistory = _ListHistory(box: box, name: 'sshServerHistory');
late final writeScriptTipShown = propertyDefault('writeScriptTipShown', false);
}

View File

@@ -282,4 +282,7 @@ class SettingStore extends HiveStore {
/// Hide port forward beta warning
late final portForwardBetaWarned = propertyDefault('portForwardBetaWarned', false);
late final sshPageSortBy = propertyDefault('sshPageSortBy', 0);
late final sshPageSortAsc = propertyDefault('sshPageSortAsc', true);
}