updateScreenSize method
Implementation
void updateScreenSize(double pWidth, double pHeight) {
bool screenSizeChanged =
(_pageWidth.value != pWidth || _pageHeight.value != pHeight);
if (pWidth <= 0 || pHeight <= 0) return;
_pageWidth.value = pWidth;
_pageHeight.value = pHeight;
if (_isFirstTimePositioning) {
_initializePosition();
_isFirstTimePositioning = false;
} else if (screenSizeChanged) {
// 按比例恢复大致位置
xOffset.value = _pageWidth.value * _xOffsetRatio;
yOffset.value = _pageHeight.value * _yOffsetRatio;
if (_oldYOffsetRatio != null) {
_oldYOffset = _pageHeight.value * _oldYOffsetRatio!;
}
_adjustPositionOnPanUpdate(xOffset.value, yOffset.value, isReScale: true);
if (panelState.value != PanelState.expanded) {
_calcOffsetWhenForceDock();
}
// 同步比例,确保后续缩放事件使用正确的位置
_syncOffsetRatios();
}
}