mSetImageSize method
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;
}