dash_responsive_grid 0.0.2 copy "dash_responsive_grid: ^0.0.2" to clipboard
dash_responsive_grid: ^0.0.2 copied to clipboard

Lightweight, dependency-free responsive grid for Flutter. Auto column count by screen width, a staggered masonry layout, and loading/empty/error states.

dashstack_poster

dash_responsive_grid #

A Flutter grid that picks its own column count from screen width — no LayoutBuilder, no breakpoint math. Includes a staggered ("masonry") layout for unevenly sized tiles. Zero dependencies.

Vertical Horizontal Masonry
[Vertical grid] [Horizontal grid] [Masonry grid]

Install #

dependencies:
  dash_responsive_grid: <latest_version>

Usage #

import 'package:dash_responsive_grid/dash_responsive_grid.dart';

ResponsiveGridView.builder(
  itemCount: items.length,
  minColumnWidth: 160,        // columns auto-fit to width
  itemBuilder: (context, index) => MyCard(items[index]),
)

Prefer fixed breakpoints instead? Pass breakpoints: GridBreakpoints.defaultBreakpoints (mobile: 2 cols, tablet: 4, desktop: 6, web: 8) or your own GridBreakpoints(...). Neither given → defaults kick in automatically.

Loading / empty / error #

ResponsiveGridView.builder(
  itemCount: items.length,
  minColumnWidth: 160,
  isLoading: isLoading,
  hasError: hasError,
  itemBuilder: (context, index) => MyCard(items[index]),
)

Built-in spinner / "No items" / error message — override with loadingBuilder, emptyBuilder, errorBuilder.

Horizontal scroll #

SizedBox(
  height: 260,
  child: ResponsiveGridView.builder(
    itemCount: items.length,
    scrollDirection: Axis.horizontal,
    minRows: 2,
    maxRows: 2,
    itemBuilder: (context, index) => MyCard(items[index]),
  ),
)

Masonry (staggered) layout #

Items keep their own natural height instead of a uniform tile size — each is packed into whichever column is currently shortest:

ResponsiveMasonryGridView.builder(
  itemCount: items.length,
  minColumnWidth: 160,
  itemSpacing: 12,
  rowSpacing: 12,
  itemBuilder: (context, index) => MyCard(items[index]),
)

Same column-count resolution (minColumnWidth/breakpoints), spacing, padding, and loading/empty/error handling as ResponsiveGridView. Layout is eager (every item is measured to compute its placement), so it's a good fit for a feed or gallery section — not for very long or infinite lists; use ResponsiveGridView for those.

Key parameters #

Parameter What it does
minColumnWidth / breakpoints pick a column-count strategy
minColumns / maxColumns clamp column count
minRows / maxRows same, but for horizontal scroll
itemSpacing / rowSpacing gaps between tiles
childAspectRatio tile width/height ratio
isLoading / hasError / loadingBuilder / emptyBuilder / errorBuilder state handling
scrollDirection Axis.vertical (default) or Axis.horizontal

Full list in the dartdoc on ResponsiveGridView / ResponsiveMasonryGridView. Runnable demo: example/.

Bugs & Credits #

Report bugs and ask questions on GitHub Issues. Maintained by Dashstack Infotech, Surat.

1
likes
160
points
117
downloads

Documentation

API reference

Publisher

verified publisherdashstack.tech

Weekly Downloads

Lightweight, dependency-free responsive grid for Flutter. Auto column count by screen width, a staggered masonry layout, and loading/empty/error states.

Repository (GitHub)
View/report issues

Topics

#grid #responsive #layout #masonry

License

MIT (license)

Dependencies

flutter

More

Packages that depend on dash_responsive_grid