mSetImageSize method

bool mSetImageSize({
  1. BoxConstraints? constraints,
})

Implementation

bool mSetImageSize({BoxConstraints? constraints}) {
  if (constraints != null) {
    if (constraints.maxWidth == mConstraints?.maxWidth &&
        constraints.maxHeight == mConstraints?.maxHeight &&
        mImageDefW > 0 &&
        mImageDefH > 0) {
      return true;
    }
    // 比如旋转时,按默认比例及位置显示
    if (mConstraints != null &&
        (constraints.maxWidth != mConstraints?.maxWidth ||
            constraints.maxHeight != mConstraints?.maxHeight)) {
      mScale = 1;
      mOffset = Offset.zero;
      Future.delayed(const Duration(milliseconds: 0), () {
        setState(() {});
      });
    }
    mConstraints = constraints;
  }

  if (mImageSize == null) return false;
  if (mConstraints == null) return false;
  if (mConstraints!.maxWidth == 0 || mConstraints!.maxHeight == 0) {
    return false;
  }
  if (mImageSize!.width == 0 || mImageSize!.height == 0) return false;

  if (mImageSize!.width / mImageSize!.height >
      mConstraints!.maxWidth / mConstraints!.maxHeight) {
    mImageDefW = mConstraints!.maxWidth;
    mImageDefH = mImageDefW * mImageSize!.height / mImageSize!.width;
    _imageMaxFitH = mConstraints!.maxHeight;
    _imageMaxFitW = _imageMaxFitH * mImageSize!.width / mImageSize!.height;
  } else {
    mImageDefH = mConstraints!.maxHeight;
    mImageDefW = mImageDefH * mImageSize!.width / mImageSize!.height;
    _imageMaxFitW = mConstraints!.maxWidth;
    _imageMaxFitH = _imageMaxFitW * mImageSize!.height / mImageSize!.width;
  }
  return true;
}