updateScreenSize method

void updateScreenSize(
  1. double pWidth,
  2. double pHeight
)

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();
  }
}