filled static method
Widget
filled({
- required BuildContext context,
- required String title,
- required VoidCallback? onPressed,
- bool isDisabled = false,
- TextStyle? titleStyle,
- Color? backgroundColor,
- double height = 50,
- double horizontalPadding = 20,
- double? width,
- Color? shadowColor,
- double shadowBlurRadius = 0,
- IconData? icon,
- Color? iconColor,
- double iconSize = 22,
- Position iconPosition = Position.leading,
- Position labelPosition = Position.center,
Implementation
static Widget filled({
required BuildContext context,
required String title,
required VoidCallback? onPressed,
bool isDisabled = false,
TextStyle? titleStyle,
Color? backgroundColor,
double height = 50,
double horizontalPadding = 20,
double? width,
Color? shadowColor,
double shadowBlurRadius = 0,
IconData? icon,
Color? iconColor,
double iconSize = 22,
Position iconPosition = Position.leading,
Position labelPosition = Position.center,
}) {
final scale = DeviceHelper.getScalingFactor(context);
final effectiveBackground = isDisabled
? Colors.grey.shade300
: backgroundColor ?? Colors.white;
final effectiveTitleStyle = isDisabled
? titleStyle?.copyWith(color: Colors.grey)
: titleStyle;
final effectiveIconColor = isDisabled
? Colors.grey
: iconColor ?? titleStyle?.color;
return CupertinoButton(
padding: EdgeInsets.zero,
borderRadius: BorderRadius.circular(12 * scale),
color: Colors.transparent,
onPressed: isDisabled ? null : onPressed,
child: AnimatedOpacity(
duration: const Duration(milliseconds: 150),
opacity: isDisabled ? 0.6 : 1.0,
child: Container(
width: width != null ? width * scale : double.infinity,
height: height * scale,
padding: EdgeInsets.symmetric(horizontal: horizontalPadding * scale),
decoration: BoxDecoration(
color: effectiveBackground,
borderRadius: BorderRadius.circular(12 * scale),
boxShadow: !isDisabled && shadowBlurRadius > 0
? [
BoxShadow(
color:
shadowColor?.withValues(alpha: 0.3) ?? Colors.black26,
blurRadius: shadowBlurRadius * scale,
offset: Offset(0, 2 * scale),
),
]
: null,
),
child: _buildContent(
context: context,
title: title,
titleStyle: effectiveTitleStyle,
icon: icon,
iconColor: effectiveIconColor,
iconSize: iconSize,
iconPosition: iconPosition,
labelPosition: labelPosition,
),
),
),
);
}