A practical toolkit for Flutter UI development, focused on saving time, reducing boilerplate, and writing layout code that’s readable, consistent, and fun.
Whether you’re working on layout, spacing, visibility, or sizing, exui
gives you expressive helpers for the most common tasks, with zero dependencies and seamless integration into any codebase.
Here are just a few examples:
Padding
With exui
:
Text("Hello").paddingAll(16)
Without:
Padding(
padding: EdgeInsets.all(16),
child: Text("Hello"),
)
With additional extensions for quickly adding specific padding: paddingHorizontal
, paddingVertical
, paddingOnly
, paddingSymmetric
, paddingLeft
, paddingRight
, paddingTop
, paddingBottom
Gaps
exui
gaps are more performant than the gap
package — they use native SizedBox
widgets with no runtime checks or context detection. Just pure Dart and Flutter for clean, zero-overhead spacing.
With exui
:
Column(
children: [
Text("A"),
16.gapColumn,
Text("B"),
],
)
Without:
Column(
children: [
Text("A"),
SizedBox(height: 16),
Text("B"),
],
)
With additional extensions for quickly adding specific gap values: gapRow
, gapColumn
, gapVertical
, gapHorizontal
etc.
Visibility
With exui
:
Text("Visible?").visibleIf(showText)
Without:
showText ? Text("Visible?") : const SizedBox.shrink()
Constraints
With exui
:
Image.asset("logo.png").maxWidth(200)
Without:
ConstrainedBox(
constraints: BoxConstraints(maxWidth: 200),
child: Image.asset("logo.png"),
)
All exui
Extensions:
Emojis only added to distinguish easily between extensions
Layout Manipulation
padding
- Quickly Add Padding
center
- Center Widgets
↔️ expanded
- Fill Available Space
flex
- fast Flexibles
align
- Position Widgets
positioned
- Position Inside a Stack
intrinsic
- Size Widgets
margin
- Add Outer Spacing
Layout Creation
gap
- Performant gaps
row
/ column
- Rapid Layouts
row*
/ column*
- Rapid Aligned Layouts
stack
- Overlay Widgets
Visibility, Transitions & Interactions
visible
- Conditional Visibility
opacity
- Widget Transparency
safeArea
- SafeArea Padding
gesture
- Detect Gestures
hero
- Shared Element Transitions
Containers & Effects
sizedBox
- Put in a SizedBox
constrained
- Limit Widget Sizes
coloredBox
- Wrap in a Colored Box
decoratedBox
- Borders, Gradients & Effects
clip
- Clip Widgets into Shapes
fittedBox
- Fit Widgets