Skip to content

Commit dfdacb2

Browse files
authored
Merge pull request #12 from jozzdart/dev
v1.0.5
2 parents c0f8712 + ffd76d9 commit dfdacb2

File tree

3 files changed

+153
-48
lines changed

3 files changed

+153
-48
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## 1.0.5
2+
3+
- Now the package is more focused on being an additional utility, I think it's more realistic to treat it as such, and not as a replacement for the widgets themselves
4+
- Updated package vision, description and explanations in the README
5+
16
## 1.0.4
27

38
- Fixed `SizedBox` extensions to accept `int` values

README.md

Lines changed: 147 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,12 @@
1515
</a>
1616
</p>
1717

18-
> **Want to 10× your Flutter UI development speed?**
19-
> Use `exui`. It’s the fastest way to build clean, maintainable UIs, no wrappers, no boilerplate.
18+
> **Accelerate your Flutter UI development, without compromising clarity.**
19+
> `exui` helps you build clean, maintainable UIs faster, with no wrappers and zero boilerplate.
2020
21-
Stop wasting time on widget nesting and boilerplate. **`exui`** is a modern, zero-dependency Flutter extension library that makes your UI code faster, cleaner, and more expressive. It provides expressive, chainable extensions for **most used Flutter widgets**—with no reliance on Material, Cupertino, or external libraries. Just pure Dart and Flutter, designed to work seamlessly in any project.
21+
**`exui`** is a lightweight, zero-dependency extension library for Flutter that enhances your UI code with expressive, chainable utilities. It streamlines common layout and styling patterns using pure Dart and Flutter, no reliance on Material, Cupertino, or third-party frameworks.
22+
23+
Designed to work seamlessly in any project, `exui` makes your widget code more concise, readable, and efficient, all while keeping full control over your widget tree.
2224

2325
### ✅ Features
2426

@@ -28,28 +30,27 @@ Stop wasting time on widget nesting and boilerplate. **`exui`** is a modern, zer
2830
- **Zero dependencies** - Pure Dart. No bloat. Add it to any project safely.
2931
- **Battle-tested** - backed by **hundreds of unit tests** to ensure safety and reliability.
3032
- **Exceptional documentation** - every extension is well documented with clear examples and fast navigation.
31-
- **Amazing shorthands** - `.paddingAll`, `.center`, `.expanded`, `.sizedBox`, and more!
3233

3334
---
3435

3536
### ✨ All `exui` Extensions:
3637

37-
`exui` includes a focused set of pure Flutter extensions, no Material or Cupertino dependencies - so you stay in control of your widget tree and design system. This core library contains **chainable, declarative enhancements** for layout, styling, interaction, and more. Each section below links to detailed documentation for a specific extension group. (Emojis only added to distinguish easily between extensions)
38+
Each section below links to detailed documentation for a specific extension group. (Emojis only added to distinguish easily between extensions)
3839

3940
#### Layout Manipulation
4041

41-
[📏 `padding` - Add Padding fast](#-padding--add-padding-to-any-widget)
42-
[🎯 `center` - Center Widgets fast](#-center--center-your-widget-with-optional-factors)
42+
[📏 `padding` - Quickly Add Padding](#-padding--add-padding-to-any-widget)
43+
[🎯 `center` - Center Widgets](#-center--center-your-widget-with-optional-factors)
4344
[↔️ `expanded` - Fill Available Space](#️-expanded---make-widgets-fill-available-space)
4445
[🧬 `flex` - fast Flexibles](#-flex--flexible-layouts-with-fine-tuned-control)
45-
[📐 `align` - Position Widgets fast](#-align--position-a-widget-precisely)
46+
[📐 `align` - Position Widgets](#-align--position-a-widget-precisely)
4647
[📍 `positioned` - Position Inside a Stack](#-positioned--position-widgets-inside-a-stack)
4748
[🔳 `intrinsic` - Size Widgets](#-intrinsic--size-widgets-to-their-natural-dimensions)
48-
[`margin` - Add Outer Spacing fast](#-margin--add-outer-spacing-around-widgets)
49+
[`margin` - Add Outer Spacing](#-margin--add-outer-spacing-around-widgets)
4950

5051
#### Layout Creation
5152

52-
[↕️ `gap` - fast gaps native flutter](#️-gap---add-spacing-using-double-extensions)
53+
[↕️ `gap` - Performant gaps](#️-gap---add-spacing-using-number-extensions)
5354
[🧱 `row` / `column` - Rapid Layouts](#-row--column--instantly-wrap-widgets-in-flex-layouts)
5455
[🧭 `row*` / `column*` - Rapid Aligned Layouts](#-row--column--rapid-alignment-extensions-for-flex-layouts)
5556
[🧊 `stack` - Overlay Widgets](#-stack--overlay-widgets-with-full-stack-control)
@@ -64,7 +65,7 @@ Stop wasting time on widget nesting and boilerplate. **`exui`** is a modern, zer
6465

6566
#### Containers & Effects
6667

67-
[📦 `sizedBox` - put in a SizedBox](#-sizedbox--wrap-widgets-in-fixed-size-boxes)
68+
[📦 `sizedBox` - Put in a SizedBox](#-sizedbox--wrap-widgets-in-fixed-size-boxes)
6869
[🚧 `constrained` - Limit Widget Sizes](#-constrained--add-size-limits-to-widgets)
6970
[🟥 `coloredBox` - Wrap in a Colored Box](#-coloredbox--add-background-color-to-any-widget)
7071
[🎨 `decoratedBox` - Borders, Gradients & Effects](#-decoratedbox--add-backgrounds-borders-gradients--effects)
@@ -74,7 +75,7 @@ Stop wasting time on widget nesting and boilerplate. **`exui`** is a modern, zer
7475
#### Widget Creation
7576

7677
[📝 `text` - String to Widget](#-text--turn-any-string-into-a-text-widget)
77-
[🎛️ `styled text` - style text fast](#️-styled-text---modify-and-style-text-widgets-easily)
78+
[🎛️ `styled text` - Style Text](#️-styled-text---modify-and-style-text-widgets-easily)
7879
[🔣 `icon` - Create and Style Icons](#-icon--quickly-create-and-style-icons)
7980

8081
> `exui` is built on **pure Flutter** (`flutter/widgets.dart`) and avoids bundling unnecessary Material or Cupertino designs by default. For convenience, optional libraries are provided for those who want seamless integration with Flutter’s built-in design systems.
@@ -101,51 +102,150 @@ Stop wasting time on widget nesting and boilerplate. **`exui`** is a modern, zer
101102

102103
### `exui` Vision
103104

104-
What if every widget in your Flutter app could instantly do more, with less code?
105+
**`exui`** is a practical toolkit for Flutter UI development — focused on saving time, reducing boilerplate, and writing layout code that’s readable, consistent, and fun.
106+
107+
This isn’t about replacing widgets — it’s about using **concise, chainable extensions** to help you build better UIs faster. You stay in full control of your widget tree and design system.
105108

106-
That’s the bold vision behind **`exui`**: to radically streamline UI development by extending **every core Flutter widget** with powerful, chainable, and expressive enhancements. No wrappers. No boilerplate. Just pure Flutter.
109+
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.
107110

108-
While most packages offer a handful of helpers or rely on custom widget trees, `exui` takes a more ambitious approach:
111+
### Here are just a few examples:
109112

110-
> **A zero-dependency extension library with over 200 chainable utilities—designed to accelerate development, reduce clutter, and bring elegance to every line of UI code.**
113+
---
111114

112-
Whether you're prototyping ideas or building production-grade applications, `exui` helps you move faster without sacrificing clarity or control.
115+
#### 📏 Padding
116+
117+
**With `exui`:**
113118

114119
```dart
115-
"Click me"
116-
.text()
117-
.paddingAll(12)
118-
.redBox()
119-
.clipCircular()
120-
.onTap(() => print("Tapped!"));
120+
Text("Hello").paddingAll(16)
121+
```
122+
123+
**Without:**
124+
125+
```dart
126+
Padding(
127+
padding: EdgeInsets.all(16),
128+
child: Text("Hello"),
129+
)
130+
```
131+
132+
With additional extensions for quickly adding specific padding: `paddingHorizontal`, `paddingVertical`, `paddingOnly`, `paddingSymmetric`, `paddingLeft`, `paddingRight`, `paddingTop`, `paddingBottom`
133+
134+
---
135+
136+
#### ↔️ Expanded
137+
138+
**With `exui`:**
139+
140+
```dart
141+
Text("Stretch me").expanded3
142+
```
143+
144+
**Without:**
145+
146+
```dart
147+
Expanded(
148+
flex: 3,
149+
child: Text("Stretch me"),
150+
)
121151
```
122152

123-
Each `.text()`, `.marginAll()`, or `.icon()` you use replaces multiple layers of nested widgets with a single, readable chain. Multiply that across an entire app—and the productivity gains are exponential.
153+
With additional extensions for quickly adding specific flex values: `expanded2`, `expanded3`, `expanded4`, `expanded5`, `expanded6`, `expanded7`, `expanded8` or `expandedFlex(int)`
154+
155+
---
156+
157+
#### 🎯 Center
124158

125-
### Without `exui`
159+
**With `exui`:**
126160

127161
```dart
128-
BottomNavigationBarItem(
129-
icon: Icon(Icons.home),
130-
label: 'Page 1',
131-
),
132-
BottomNavigationBarItem(
133-
icon: Icon(Icons.pages),
134-
label: 'Page 2',
135-
),
162+
Icon(Icons.star).center()
136163
```
137164

138-
### With `exui`
165+
**Without:**
139166

140167
```dart
141-
Icons.home.icon().bottomNavigationItem('Page 1'),
142-
Icons.pages.icon().bottomNavigationItem('Page 2'),
168+
Center(
169+
child: Icon(Icons.star),
170+
)
143171
```
144172

145-
> **Stop wasting time on verbose nesting and boilerplate.**
146-
> **Start composing clean, maintainable UIs with ease.**
173+
With additional extensions for quickly adding specific center factors: `centerWidth(double?)`, `centerHeight(double?)` or with parameters `center({widthFactor, heightFactor})`
174+
175+
---
176+
177+
#### ↕️ Gaps
178+
179+
**With `exui`:**
180+
181+
```dart
182+
Column(
183+
children: [
184+
Text("A"),
185+
16.gapColumn,
186+
Text("B"),
187+
],
188+
)
189+
```
190+
191+
**Without:**
192+
193+
```dart
194+
Column(
195+
children: [
196+
Text("A"),
197+
SizedBox(height: 16),
198+
Text("B"),
199+
],
200+
)
201+
```
202+
203+
With additional extensions for quickly adding specific gap values: `gapRow`, `gapColumn` or with parameters `gap({row, column})` or `gapVertical` or `gapHorizontal` etc.
204+
205+
---
206+
207+
#### 👁️ Visibility
208+
209+
**With `exui`:**
210+
211+
```dart
212+
Text("Visible?").visibleIf(showText)
213+
```
214+
215+
**Without:**
216+
217+
```dart
218+
showText ? Text("Visible?") : const SizedBox.shrink()
219+
```
220+
221+
With additional extensions for quickly adding specific visibility conditions: `hide()` `visibleIfNot(bool)` or `visibleIfNull(bool)` and more.
222+
223+
---
224+
225+
#### 🚧 Constraints
226+
227+
**With `exui`:**
228+
229+
```dart
230+
Image.asset("logo.png").maxWidth(200)
231+
```
232+
233+
**Without:**
234+
235+
```dart
236+
ConstrainedBox(
237+
constraints: BoxConstraints(maxWidth: 200),
238+
child: Image.asset("logo.png"),
239+
)
240+
```
241+
242+
With additional extensions for quickly adding specific constraints: `constrainedWidth`, `constrainedHeight`, `minWidth`, `maxWidth`, `minHeight`, `maxHeight` or with parameters `constrained({minWidth, maxWidth, minHeight, maxHeight})` or `constrainedBox(BoxConstraints)`
243+
244+
---
245+
246+
These are just a few of the 200+ utilities in `exui`. Every method is chainable, production-safe, and built with clarity in mind.
147247

148-
This isn’t just a utility library. It’s a **declarative layer on top of Flutter**—one that feels native, scales cleanly, and fits seamlessly into any project.
248+
> **From layout to constraints, visibility to spacing — `exui` keeps your UI code clean, fast, and Flutter-native.**
149249
150250
Welcome to **`exui`**.
151251

@@ -619,9 +719,9 @@ _[⤴️ Back](#-all-exui-extensions) → All `exui` Extensions_
619719
620720
---
621721
622-
### ↕️ `gap` - Add Spacing Using Double Extensions
722+
### ↕️ `gap` - Add Spacing Using Number Extensions
623723
624-
Use doubles to create `SizedBox` widgets with clear, expressive syntax. These extensions turn raw numbers into layout spacing—perfect for columns, rows, and consistent vertical/horizontal gaps.
724+
Use doubles or ints to create `SizedBox` widgets with clear, expressive syntax. These extensions turn raw numbers into layout spacing—perfect for columns, rows, and consistent vertical/horizontal gaps.
625725
626726
- `sizedWidth` — `SizedBox(width: this)`
627727
- `sizedHeight` — `SizedBox(height: this)`
@@ -634,30 +734,30 @@ All extensions return a `SizedBox` and are ideal for use in layouts to avoid mag
634734
635735
```dart
636736
// Horizontal space of 16
637-
16.0.gapHorizontal,
737+
16.gapHorizontal,
638738
```
639739
640740
```dart
641741
// Vertical space of 8
642-
8.0.gapVertical,
742+
8.gapVertical,
643743
```
644744

645745
```dart
646746
// SizedBox with explicit width
647-
24.0.sizedWidth,
747+
2.5.sizedWidth,
648748
```
649749

650750
```dart
651751
// SizedBox with explicit height
652-
32.0.sizedHeight,
752+
32.sizedHeight,
653753
```
654754

655755
```dart
656756
// Clean Row layout
657757
Row(
658758
children: [
659759
WidgetOne(),
660-
12.0.gapRow,
760+
12.gapRow,
661761
WidgetTwo(),
662762
],
663763
)
@@ -668,7 +768,7 @@ Row(
668768
Column(
669769
children: [
670770
WidgetOne(),
671-
16.0.gapColumn,
771+
16.gapColumn,
672772
WidgetTwo(),
673773
],
674774
)

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: exui
22
description: "Build your UI faster. No boilerplate, no dependencies. Just powerful widget extensions."
3-
version: 1.0.4
3+
version: 1.0.5
44
homepage: https://github.com/jozzdart/exui
55
repository: https://github.com/jozzdart/exui
66
issue_tracker: https://github.com/jozzdart/exui/issues

0 commit comments

Comments
 (0)