filled static method

Widget filled({
  1. required BuildContext context,
  2. required String title,
  3. required VoidCallback? onPressed,
  4. bool isDisabled = false,
  5. TextStyle? titleStyle,
  6. Color? backgroundColor,
  7. double height = 50,
  8. double horizontalPadding = 20,
  9. double? width,
  10. Color? shadowColor,
  11. double shadowBlurRadius = 0,
  12. IconData? icon,
  13. Color? iconColor,
  14. double iconSize = 22,
  15. Position iconPosition = Position.leading,
  16. 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,
        ),
      ),
    ),
  );
}