bento_layout
A Flutter package for building bento-style grid layouts using the skyline bin-packing algorithm. Tiles of varying sizes are packed without overlap or unnecessary gaps. Width fills the parent; height is stable across screen sizes.
What this package is like to depend on
Last release 1 months ago
29 Jun 2026
Too new to tell
only 2 release windows
Nearly every release is documented
notes for 4 of 4 stable releases
Nothing withdrawn
no release was ever pulled
5 months old
4 releases · first in 2026
4 releases in the last 12 months
see the full history below
Release timeline
4 releases · Mar 2026 to Jun 2026Releases
latest 4-
0.2.029 Jun 2026Release notes
Open source →Added
- Exported
SkylinePacking,BentoLayoutDetails, andBentoGridLayout— consumers can now callSkylinePacking.pack()directly to compute tile geometry and position children in aStackor custom layout, without going throughSliverGrid TileEdgeclass andsortedEdgesonBentoLayoutDetails— pre-sorted tile vertical spans for efficient scroll-offset lookupsBentoGridLayoutnow uses O(log n) binary search forgetMinChildIndexForScrollOffsetandgetMaxChildIndexForScrollOffsetinstead of returning the full item range — only visible tiles are built during scroll when usingSliverGrid
Fixed
BentoGridLayout.getMinChildIndexForScrollOffsetandgetMaxChildIndexForScrollOffsetpreviously returned0andlength - 1for all scroll offsets, causing Flutter to build every tile on every scroll frame regardless of visibility
- Exported
-
0.1.209 Mar 2026 -
0.1.109 Mar 2026 -
0.1.008 Mar 2026Release notes
Open source →Initial release.
Added
BentoGrid— drop-in scrollable grid widget powered by the skyline algorithmBentoItem— tile wrapper accepting anyWidgetchild and aBentoItemSizeBentoItemSize— 9-value enum encoding both width and height in a self-documenting name (quarterBar,halfCard,fullToweretc.)BentoDimension— resolved tile dimensions aswidthFraction+heightSpanBentoSizingStrategy— abstract interface for custom size mappingsDefaultBentoSizingStrategy— built-in 3×3 size matrix (quarter/half/full × Bar/Card/Tower)BentoGridDelegate— exportedSliverGridDelegatefor composing the grid into customCustomScrollViewscroll views alongside other slivers
Design decisions
- Tile widths expressed as fractions of total width — no column count required
- Tile heights use a fixed
unitHeight(default180px) decoupled from width — heights are consistent across all screen sizes - Skyline slot granularity derived automatically from the smallest
widthFractionpresent in the item list - Greedy bin-packing — items are placed at the lowest available position in order, preserving intentional tile sequence