getPreferredRect method
Returns the size based on the values passed to it.
Implementation
Rect getPreferredRect(
RenderBox parentBox, SfSliderThemeData themeData, Offset offset,
{bool? isActive}) {
final Size overlayPreferredSize = (parentBox as RenderBaseSlider)
.overlayShape
.getPreferredSize(themeData);
final Size thumbPreferredSize =
parentBox.thumbShape.getPreferredSize(themeData);
final Size tickPreferredSize =
parentBox.tickShape.getPreferredSize(themeData);
double maxRadius;
if (_isVertical(parentBox)) {
maxRadius = math.max(
overlayPreferredSize.height / 2,
math.max(
thumbPreferredSize.height / 2, tickPreferredSize.height / 2));
} else {
maxRadius = math.max(overlayPreferredSize.width / 2,
math.max(thumbPreferredSize.width / 2, tickPreferredSize.width / 2));
}
final double maxTrackHeight =
math.max(themeData.activeTrackHeight, themeData.inactiveTrackHeight);
// ignore: avoid_as
if (_isVertical(parentBox)) {
double left = offset.dx;
if (isActive != null) {
left += isActive
? (maxTrackHeight - themeData.activeTrackHeight) / 2
: (maxTrackHeight - themeData.inactiveTrackHeight) / 2;
}
final double right = left +
(isActive == null
? maxTrackHeight
: (isActive
? themeData.activeTrackHeight
: themeData.inactiveTrackHeight));
final double top = offset.dy + maxRadius;
final double bottom = top + parentBox.size.height - (2 * maxRadius);
return Rect.fromLTRB(
math.min(left, right), top, math.max(left, right), bottom);
} else {
final double left = offset.dx + maxRadius;
double top = offset.dy;
if (isActive != null) {
top += isActive
? (maxTrackHeight - themeData.activeTrackHeight) / 2
: (maxTrackHeight - themeData.inactiveTrackHeight) / 2;
}
final double right = left + parentBox.size.width - (2 * maxRadius);
final double bottom = top +
(isActive == null
? maxTrackHeight
: (isActive
? themeData.activeTrackHeight
: themeData.inactiveTrackHeight));
return Rect.fromLTRB(
math.min(left, right), top, math.max(left, right), bottom);
}
}