setSmartEdgeDocking static method
启用/禁用智能停靠机制
enabled 是否启用智能停靠
visibleWidth 停靠时可见的宽度(默认5像素)
当启用时,用户拖动窗口使其部分超出屏幕边界松开鼠标,会自动触发停靠 系统会智能判断:
- 如果窗口同时超出两个相邻边界(如左边和上边),则触发角落停靠
- 如果窗口只超出一个边界,则触发边缘停靠
Implementation
static Future<void> setSmartEdgeDocking({
required bool enabled,
double visibleWidth = 5.0,
}) async {
if (!MyPlatform.isDesktop) return;
_isSmartDockingEnabled = enabled;
_smartDockVisibleWidth = visibleWidth;
_enableCornerDocking = true; // 始终启用角落检测
if (enabled) {
// 启用智能停靠时,禁用Windows的自动最大化功能
await WindowFocusManager.disableWindowsAutoMaximize();
// 开始监听窗口位置变化
await _startSmartDockingMonitor();
// 初始化窗口焦点监听器
WindowFocusManager.initialize();
} else {
// 禁用时,停止监听并恢复窗口
await _stopSmartDockingMonitor();
// 清理窗口焦点监听器
WindowFocusManager.dispose();
// 恢复Windows的自动最大化功能
await WindowFocusManager.restoreWindowsAutoMaximize();
}
}