DeckTerm: 现代化的一站式远程管理终端
DeckTerm 是一款基于 Dart 与 Flutter 构建的现代化、跨平台远程管理客户端,专为开发者和系统管理员设计。它将强大的功能与基于 Tdesign 的优雅界面无缝融合,为您在 Windows 和 Android 平台上提供一致、高效的操作体验。
核心功能:
SSH 终端: 功能完备的 SSH 客户端,提供稳定、安全的远程命令行访问。
SFTP 文件传输: 直观的远程文件浏览器,支持上传和下载。
VNC 远程桌面: 实现图形化远程控制,轻松管理桌面环境。
实时状态监控: 以仪表盘形式清晰展示远程设备的 CPU、内存等关键性能指标。
便捷的设备管理: 集中管理您的所有设备和会话,一键连接。
DeckTerm 同时支持浅色/深色主题切换与多语言,致力于成为您工具箱中最高效、最美观的远程利器
1、整体架构和设计思路,不同模块使用的技术栈
整体架构与设计思路:
DeckTerm 是一个基于 Flutter 构建的跨平台(Android / Windows)移动终端与文件管理应用,旨在为平板等边缘设备提供“桌面级”的开发调试体验。
架构上采用了界面展示层(UI)与业务逻辑层(Function)严格分离的分层设计。为了保证代码的可维护性,针对平台特定功能(如文件系统访问、软硬件键盘调起)进行了独立目录隔离,并通过 shared_preferences 实现了响应式工作台分割面板布局比例和连接配置的本地持久化机制。
模块技术栈:
前端 UI 模块: 采用 Flutter (^3.11.0) 结合腾讯 TDesign 组件库 (tdesign_flutter ^0.2.7) 进行界面开发。
SSH 终端模块: 使用 dartssh2 (^2.2.5) 提供底层 SSH / SFTP 协议通信支持;xterm (^4.0.0) 负责完整的 VT100/xterm-256color 终端仿真与流式渲染。
系统权限与交互模块: permission_handler 处理 Android 端的运行时权限申请。
2、“我”的负责模块和结果(尽可能量化)
负责模块: 核心 SSH 终端仿真交互模块、跨平台软硬件键盘驱动适配、多平台文件传输管理模块。
量化工作与结果:
极大降低交互延迟: 深入优化 SSH 底层网络通信,通过禁用 Nagle 算法(开启 TCP_NODELAY)解决延迟 ACK 叠加问题,将 SSH 键盘输入到回显的交互延迟从 ~500ms 大幅降低至数十毫秒的无感级别。
高可用多会话管理: 利用 IndexedStack 与状态保持(AutomaticKeepAliveClientMixin)实现了终端 Tab 标签页管理系统,支持 10+ 个并发 SSH 会话切换时保持 100% 连接存活,做到零断线重连。
完善外设生态输入: 成功适配了 100% 的 Windows/Android 物理全键盘快捷键(包含 F1-F12、方向键、Ctrl组合键),建立跨平台的本地与远程(上传/下载)进度可视化任务队列。
3、“我”遇到的难点、坑,和解决方案
遇到的难点1:中文输入法(IME)冲突导致终端无法正常输入。
坑点: 在 Windows 上使用 xterm 时,系统 IME 会拦截特定字符事件导致终端识别错乱;在 Android 端,原生软键盘与终端焦点争抢极易导致键盘掉落或输入错位。
解决方案: 我采取了平台差异化方案。对 Windows 端,给 xterm 注入 hardwareKeyboardOnly 标识跳过框架层的 TextInputClient,直接从底层硬件捕获物理按键;对 Android 端,我独立封装了一个隐藏 TextField 并追踪