Niku
Effortless property builder for composing maintainable Flutter UI
Text("Property Styling")
.asNiku()
..fontSize(24)
..color(Colors.blue)
..mx(8)
Declarative
Compose Flutter UI in a more declarative way, easier to maintain, and better developer experience.
Niku helps developer to write less Flutter code, removing "Nested Hell" while maintaining declarative UI at the same time.
Easy to maintain
While it's easy to create UI in Flutter, but once the app get complex, it's really hard to maintain.
Niku reduce Nested Hell, transforming them into SwiftUI's modifier like syntax. And gain better developer experience
TextButton(
child: Text("Styling Field")
onPressed: callback,
).asNiku()
..onPressed(log)
..fontSize(24)
..splash(Colors.blue)
..rounded(8);
Reusable style
With Niku, developer can defined style and reuse styling anywhere in the codebase.
Reusable style can also add compose from function like or adding more styling as component need.
final textField = NikuTextField()
..color(Colors.blue);
..prefixIcon(
Icon(Icons.edit)
);
return NikuTextField().
.apply(textField)
..label("Name");
Complex Styling
Niku provided a lot of pre-defined property to quickly develop Flutter UI.
But you can go beyond that with custom property builder or using custom Widget with Niku.
Niku()
..builder((child) {
return CustomCard(
child: child,
);
)
..on(pressed: animate)
..animated(
controller,
(child) => Niku()..bg(value);
);
Predefined Component
Niku covered complex widget and prefined complex styling into simple property for each widget.
Once you're done with unique property builder, Niku also allows developers to composing the parent at the same time.
This helps reduce the process styling even the Widget is nested with multiple parent or have complex styling.
Text
Button
Column
Stack
More
Loved by developers
Inspired by SwiftUI, Tailwind CSS.
An Apple developer or web developer will be very familiar with Niku and already known half of Niku and ready to pick up.
Niku brings the best of both worlds. Packed into familiar API and shipped directly into Flutter while being idiomatic to Dart.
You will be surprised at how easy it is to get started.