SquircleWidgetExtensions extension

Extension to clip any widget into a squircle (rounded square) shape.

A squircle is a shape between a square and a circle, commonly used in modern UI design (e.g., iOS app icons, modern card designs). This extension provides methods to wrap widgets in a ClipPath using Flutter's ContinuousRectangleBorder for visually appealing, smoothly rounded corners that create the characteristic squircle effect.

Performance Considerations

  • Uses ShapeBorderClipper which is optimized for shape-based clipping
  • Clip.antiAlias provides smooth edges but may impact performance on complex widgets
  • Consider using Clip.hardEdge for better performance when anti-aliasing isn't critical

Design Guidelines

The radiusFactor parameter controls the curvature:

  • Lower values (1.0-2.0): More circular, softer appearance
  • Medium values (2.5-3.0): Balanced squircle effect (recommended)
  • Higher values (4.0+): More squared corners with subtle rounding

Common Use Cases

  • App icons and avatars
  • Modern card designs
  • Button shapes
  • Image containers
  • UI elements requiring smooth, organic corners

Example:

// Basic usage with default parameters
Container(
  width: 100,
  height: 100,
  color: Colors.blue,
).clipSquircle();

// Custom radius factor for more circular appearance
Image.asset('avatar.png').clipSquircle(2.0);

// Performance-optimized for simple shapes
Card(child: content).clipSquircle(3.0, Clip.hardEdge);
on

Methods

clipContinuousRectangle([double radiusFactor = 2.5, Clip clipBehavior = Clip.antiAlias]) ClipPath

Available on Widget, provided by the SquircleWidgetExtensions extension

Clips the widget using a continuous rectangle shape (alias for clipSquircle).
clipSquircle([double radiusFactor = 2.5, Clip clipBehavior = Clip.antiAlias]) ClipPath

Available on Widget, provided by the SquircleWidgetExtensions extension

Clips the widget using a squircle (super-ellipse) shape.