boxy 2.0.5 boxy: ^2.0.5 copied to clipboard
Layout made simple. Overcomes many limitations by the framework regarding layout
About #
Boxy is designed to overcome the limitations of Flutter's built-in layout widgets, it provides utilities for flex, custom multi-child layouts, dynamic widget inflation, slivers, and more!
Flex layouts #
A common design problem is when you need one or more children of a Row
or Column
to have the same cross-axis size
as another child in the list, with boxy this can be achieved trivially using BoxyRow
, BoxyColumn
and Dominant
.
See the documentation of BoxyRow and BoxyColumn for more information.
Custom layouts #
One of the pains of implementing custom layouts is learning the RenderObject
model and how verbose it is, to make this
process easier we provide an extremely simple container CustomBoxy
that delegates layout, paint, and hit testing.
The most powerful feature of CustomBoxy
is the ability to inflate arbitrary widgets at layout time, this means widgets
can depend on the size of others, something previously impossible without hacky workarounds.
See the documentation of CustomBoxy and BoxyDelegate for more information.
Slivers #
Ever want to give SliverList a box decoration? The sliver library provides SliverContainer which allows you to use box widgets as the foreground or background of a sliver.
This library also provides SliverCard, a SliverContainer that looks like a card.
Also check out:
- SliverPadding, an underrated built-in widget
- sliver_tools, a cool package that does similar things
Miscellaneous #
The utils library provides extensions with dozens
of axis-dependant methods on BoxConstraints
, Size
, Offset
, and more. These extensions make writing directional
layouts significantly less cumbersome.
The OverflowPadding widget is similar to
Padding
but allows the child to overflow when given negative insets.