flumpose 0.0.2
flumpose: ^0.0.2 copied to clipboard
A Flutter package for declarative, const-safe UI composition.
Changelog #
All notable changes to the Flumpose package will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.0.1 - 2025-10-13 #
Added #
Core Extensions
- Layout Extensions: Padding, margin, alignment, sizing, and scrollable wrappers
pad(),margin(),align*(),width(),height(),constrained(),scrollable()
- Background Extensions: Colors, gradients, and images
backgroundColor(),backgroundLinearGradient(),backgroundRadialGradient(),backgroundImage()
- Border & Clip Extensions: Borders, rounded corners, and clipping
border(),borderRadius(),clipRRect(),clipOval(),elevation(),boxShadow()
- Transform Extensions: Rotation, scaling, and translation
rotate(),scaleWidget(),translate(),transform()
- Text Extensions: Font styling helpers
fontSize(),color(),textColor(),bold(),italic()
- Gesture Extensions: Basic tap and press handlers
onTap(),onDoubleTap(),onLongPress(),ripple(),gestures()
- Animation Extensions: Fade animations
fade()
- Semantics Extensions: Accessibility helpers
semanticsLabel()
- Parent Extensions: Custom widget wrapping
parent()
New Feature Extensions (v0.0.1)
-
Visibility Extensions: Show/hide and opacity control
visible(),hide(),show(),showIf()opacity(),semiTransparent(),mostlyTransparent()ignorePointer(),absorbPointer()
-
Flex & Layout Extensions: Flexible layouts and aspect ratios
expanded(),flexible(),fractionalSize()aspectRatio(),square(),aspect16x9(),aspect4x3(),aspect21x9()fitted(),fitContain(),fitCover(),fitFill(),fitScaleDown()
-
Stack & Positioned Extensions: Absolute positioning and layering
positioned(),positionedTopLeft(),positionedTopRight(),positionedBottomLeft(),positionedBottomRight()positionedFill(),positionedDirectional(),positionedCenter()stack(),withOverlay(),onTopOf()indexedStack()(on List
-
Responsive Extensions: Breakpoint-based design and adaptive layouts
responsive(),onlyMobile(),onlyTablet(),onlyDesktop()adaptiveSize(),scaleWithScreen(),maxWidthBox(),responsivePadding()fillWithAspectRatio()- BuildContext extensions:
screenWidth,screenHeight,isMobile,isTablet,isDesktop,responsiveValue<T>() Breakpointhelper class with standard breakpoints (600/900/1200)
-
Advanced Gesture Extensions: Pan, drag, and scale gestures
onPan(),onHorizontalDrag(),onVerticalDrag()onScale()(pinch to zoom)draggable<T>(),dragTarget<T>()onLongPressWithDuration(),onTapWithPosition()
-
Utility Extensions: Common Flutter widget wrappers
- SafeArea:
safeArea(),safeTop(),safeBottom(),safeHorizontal() - Hero animations:
hero() - Material wrappers:
material(),card() - Baseline alignment:
baseline() - Slivers:
toSliverBox(),sliverFillRemaining(),sliverPadding(),toSliverList(),toSliverGrid() - Scaffold:
scaffold() - Keyboard:
dismissKeyboard() - Rotation:
rotatedBox()
- SafeArea:
Documentation #
- Comprehensive README with 70+ method documentation
- Usage examples for all extension categories
- API reference section
- Example app demonstrating key features
Testing #
- 66 comprehensive tests covering all extensions
- 100% backward compatibility
- Zero linter warnings or errors
Package Information #
- Flutter SDK: >=1.20.0
- Dart SDK: >=3.8.1 <4.0.0
- License: MIT
- Initial release to pub.dev
Unreleased #
Planned for v0.2.0 #
- AnimatedContainer extensions
- Theme-aware helpers
- Form and input extensions
- Custom animation builders
- Integration with state management solutions
Release Notes #
v0.0.1 - Initial Release #
This is the initial release of Flumpose, a declarative widget composition library for Flutter. The package provides 100+ chainable extension methods that transform verbose, deeply-nested Flutter widget trees into clean, readable, and maintainable code.
Key Features:
- ๐ Fluent, chainable API
- ๐ Comprehensive layout helpers
- ๐จ Background and decoration utilities
- ๐ Advanced gesture support
- ๐ฑ Responsive design helpers
- โฟ Accessibility built-in
- ๐งช Fully tested with 66 tests
Transform this:
Container(
color: Colors.blue,
child: Padding(
padding: EdgeInsets.all(16),
child: Align(
alignment: Alignment.center,
child: Text('Hello World'),
),
),
)
Into this:
Text('Hello World')
.pad(16)
.backgroundColor(Colors.blue)
.alignCenter()