responsive-row
Use ResponsiveRow in a layrz Flutter widget. Apply when wrapping ResponsiveCol children in a responsive 12-column grid container.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Use ResponsiveRow in a layrz Flutter widget. Apply when wrapping ResponsiveCol children in a responsive 12-column grid container.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Use ThemedTabView and ThemedTab in a layrz Flutter widget. Apply when adding horizontal tab navigation with Material 3 styling.
Use ThemedButton in a layrz Flutter widget. Apply when rendering any tappable action — primary/secondary CTAs, icon-only FABs, destructive actions, cooldown buttons, or the six semantic factories (.save, .cancel, .info, .show, .edit, .delete).
Use ThemedSearchInput in a layrz Flutter widget. Apply when adding a search bar — either a compact icon button that expands into an overlay, or a full-width inline field.
Use when migrating ThemedTable<T> (v1) to ThemedTable2<T> (v2) in a layrz Flutter widget. Apply when a widget uses the old ThemedTable API with onShow/onEdit/onDelete/onMultiDelete/ThemedColumn and needs to be updated.
Use ResponsiveCol in a layrz Flutter widget. Apply when defining a column's width at different breakpoints inside a ResponsiveRow.
Use ThemedTable2<T> in a layrz Flutter widget. Apply when displaying a list of domain objects in a table with sort, search, multiselect, and row actions.
| name | responsive-row |
| description | Use ResponsiveRow in a layrz Flutter widget. Apply when wrapping ResponsiveCol children in a responsive 12-column grid container. |
Dart syntax: This library requires Dart ≥ 3.10. Use dot shorthand for all enum values (e.g.
.col6,.start,.left) — never write the fully-qualified form (Sizes.col6,WrapAlignment.start).
Full constructor and examples: read
references/api.mdin this skill's directory.
ResponsiveCol children in a flex container that reflows automaticallyResponsiveRow.builderAlways paired with ResponsiveCol as children. For breakpoint logic and Sizes enum, see the responsive-col skill.
ResponsiveRow(
children: [
ResponsiveCol(xs: .col12, md: .col6, child: WidgetA()),
ResponsiveCol(xs: .col12, md: .col6, child: WidgetB()),
],
)
SizedBox(width: double.infinity, child: LayoutBuilder(...)) — uses a Column of Rows internally; LayoutBuilder provides the total row width for per-child sizing calculations. The internal Wrap-based implementation was replaced in v7.5.33 to enforce true gaps.children only accepts List<ResponsiveCol> — use ResponsiveCol(child: Divider()) for dividers.builder takes ResponsiveCol Function(int) — not Widget Function(BuildContext, int).spacing applies to both axes: horizontal gap between columns in the same row, and vertical gap between rows when columns wrap (default 0). As of v7.5.33, spacing is a TRUE pixel gap: availableWidth = totalWidth - spacing * (n - 1), then each child's width = (availableWidth / 12) * gridSize. Two col6 children with spacing=12 each receive (totalWidth - 12) / 2 pixels — not totalWidth / 2 - 6.// With spacing and center alignment
ResponsiveRow(
spacing: 16,
mainAxisAlignment: .center,
crossAxisAlignment: .center,
children: [
ResponsiveCol(xs: .col12, md: .col6, child: WidgetA()),
ResponsiveCol(xs: .col12, md: .col6, child: WidgetB()),
],
)
// Dynamic list with builder
ResponsiveRow.builder(
spacing: 16,
itemCount: items.length,
itemBuilder: (index) => ResponsiveCol(
xs: .col12,
sm: .col6,
lg: .col4,
child: ItemCard(item: items[index]),
),
)
// Fully responsive breakpoint reflow — 1/2/3/4 cols across breakpoints
ResponsiveRow(
spacing: 12,
children: [
for (final item in items)
ResponsiveCol(
xs: .col12, // mobile: 1 column
sm: .col6, // small: 2 columns
md: .col4, // medium: 3 columns
lg: .col3, // large: 4 columns
child: ItemCard(item: item),
),
],
)
ResponsiveCol outside a ResponsiveRow. It renders as a pass-through and will receive whatever width its parent provides, which is almost never correct.ResponsiveRow in an unbounded-width parent (e.g. a horizontal ListView). The row needs a finite width to compute gridSize.children only accepts List<ResponsiveCol>. Raw widgets won't compile. For dividers/spacers use const ResponsiveCol(child: Divider())..col6 with spacing: 12 fit on one row; the gap is carved from totalWidth before distributing the 12-column grid.ResponsiveRow inside another ResponsiveRow without awareness that spacing is applied per-row independently.