composite static method

CarpetStyle composite(
  1. BuildContext context,
  2. Map<double, CarpetStyle Function(BuildContext)> styles
)

Creates a composite CarpetStyle by selecting from a map of breakpoint-based styles.

The map keys represent maximum widths (in device pixels) for each style function. Styles are evaluated in ascending order of breakpoints, falling back to the last entry for larger screens. This method is ideal for responsive designs where layout complexity varies by screen size, integrating with Carpet for adaptive quilt generation.

Example usage in a Carpet widget:

CarpetStyle style = CarpetStyles.composite(context, {
  600: (ctx) => CarpetStyles.strip(ctx),
  1200: (ctx) => CarpetStyles.grid(ctx),
});

Implementation

static CarpetStyle composite(BuildContext context,
    Map<double, CarpetStyle Function(BuildContext)> styles) {
  double width = MediaQuery.of(context).size.width;

  for (var entry in styles.entries) {
    if (width <= entry.key) {
      return entry.value(context);
    }
  }

  return styles.values.last(context);
}