IncrementDecrementWidget.squared constructor
IncrementDecrementWidget.squared({
- required int quantity,
- int? maxQuantity,
- int? minValue,
- ValueUpdate? onChanged,
- Color? backgroundColor,
- Color? iconColor,
- double? elevation,
- EdgeInsetsGeometry? margin,
- EdgeInsetsGeometry? valuePadding,
- EdgeInsetsGeometry? buttonMargin,
- EdgeInsetsGeometry? buttonPadding,
- TextStyle? quantityTextStyle,
- double? width,
- double? height,
- double? buttonSize,
- double? borderRadius,
- Color? borderColor,
- double borderWidth = 1.0,
- Widget? incrementIcon,
- Widget? decrementIcon,
- Duration longPressInterval = const Duration(milliseconds: 100),
- MainAxisAlignment? alignment,
Factory constructor for squared buttons with equal width and height and customizable border radius.
Implementation
factory IncrementDecrementWidget.squared({
required int quantity,
int? maxQuantity,
int? minValue,
ValueUpdate? onChanged,
Color? backgroundColor,
Color? iconColor,
double? elevation,
EdgeInsetsGeometry? margin,
EdgeInsetsGeometry? valuePadding,
EdgeInsetsGeometry? buttonMargin,
EdgeInsetsGeometry? buttonPadding,
TextStyle? quantityTextStyle,
double? width,
double? height,
double? buttonSize,
double? borderRadius,
Color? borderColor,
double borderWidth = 1.0,
Widget? incrementIcon,
Widget? decrementIcon,
Duration longPressInterval = const Duration(milliseconds: 100),
MainAxisAlignment? alignment,
}) {
final double size = buttonSize ?? 50.0;
final double effectiveBorderRadius = borderRadius ?? 10.0;
return IncrementDecrementWidget(
quantity: quantity,
maxQuantity: maxQuantity,
minValue: minValue,
onChanged: onChanged,
backgroundColor: backgroundColor,
iconColor: iconColor,
elevation: elevation ?? 0.0,
margin: margin,
valuePadding: valuePadding,
buttonMargin: buttonMargin,
// Zero padding ensures perfect centering of the icon inside the strict size limits
buttonPadding: buttonPadding ?? EdgeInsets.zero,
quantityTextStyle: quantityTextStyle,
width: width,
height: height,
buttonWidth: size,
buttonHeight: size,
borderColor: borderColor,
borderWidth: borderWidth,
borderRadius: effectiveBorderRadius,
splashColor: Colors.grey.withCustomOpacity(0.2),
incrementIcon: incrementIcon,
decrementIcon: decrementIcon,
buttonShape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(effectiveBorderRadius),
),
longPressInterval: longPressInterval,
alignment: alignment ?? MainAxisAlignment.center,
);
}