Supercharged
Supercharged brings all the comfort features from languages like Kotlin to all Flutter developers.
- ???? fully tested
- ???? well documented
- ???? enterprise-ready
For dart web/native projects you can use ⚡ Supercharged Dart.
⛏️ Getting started
Add the dependency supercharged: ^1.X.X
(find recent version) to your project and start using Supercharged everywhere:
import 'package:supercharged/supercharged.dart';
???? Highlights
Transform any String
to colors
"#ff00ff".toColor(); // painless hex to color
"red".toColor(); // supports all web color names
Helpful string functions:
"mode:production".allAfter(":"); // "production"
"<html>".allBetween("<", ">"); // "html"`
"flutter is cool".allBefore(" is"); // "flutter"
Handle user input:
"2.1".toDouble(); // 2.1
"42".toInt(); // 42
12.between(0, 30); // true
Effortless aggregation for Iterable<int>
and Iterable<double>
:
[1, 2, 3].sum(); // 6
[1, 2, 3].average(); // 2
[1, 2, 3].min(); // 1
[1, 2, 3].max(); // 3
Advanced aggregation for any Iterable
:
var persons = [Person(age: 20), Person(age: 30), Person(age: 40)];
persons.sumBy((p) => p.age); // 90
persons.averageBy((p) => p.age); // 30
persons.count((p) => p.age < 35); // 2
persons.minBy((a,b) => a.age.compareTo(b.age)); // Person(age: 20)
persons.maxBy((a,b) => a.age.compareTo(b.age)); // Person(age: 40)
Safely access Iterable
:
[].firstOrNull(); // return null instead
[].lastOrNull(); // of throwing error
[].firstOrElse(() => Placeholder()); // Produce default values
[].lastOrElse(() => Placeholder()); // on the fly
[1, 2, 3].elementAtOrNull(4); // Never go out of bounds
[1, 2, 3].elementAtOrElse(4, () => 0);
Group up data to match view:
var persons = [
Person(name: "John", age: 21),
Person(name: "Carl", age: 18),
Person(name: "Peter", age: 56),
Person(name: "Sarah", age: 61)
];
persons.groupBy(
(p) => p.age < 40 ? "young" : "old",
valueTransform: (p) => p.name
); // {"young": ["John", "Carl"], "old": ["Peter", "Sarah"]}
Chunking for easy pagination:
["a", "b", "c", "d", "e"].chunked(3); // [ ["a", "b", "c"], ["d", "e"] ]
["a", "b", "c"].chunked(2, fill: () => ""); // [ ["a", "b"], ["c", ""] ]
More natural durations and dates:
var duration = 5.minutes + 30.seconds;
duration += 0.5.hours;
var future = 2.days.fromNow() + 20.minutes;
var past = 15.minutes.ago();
var allDaysOf2020 = DateTime(2020).until(DateTime(2021));
var allFullHoursOfFirstJanuary2020 =
DateTime(2020, 1, 1).until(DateTime(2020, 1, 2), by: 1.hours);
await 2.seconds.delay; // waits for 2 seconds
Simplified data sorting:
persons = [
Person(name: "John", age: 21),
Person(name: "Carl", age: 18),
Person(name: "Peter", age: 56),
Person(name: "Sarah", age: 61)
];
persons.sortedByNum((p) => p.age); // list sorted by age
persons.sortedByString((p) => p.name); // list sorted by name
persons // sorted with comparator
.sortedBy((a, b) => a.name.compareTo(b.name));
persons // sorting is fully integrated into processing chain
.filter((p) => p.name.length < 5)
.sortedByNum((p) => p.age)
.map((p) => p.name)
.toList();
Solid tween shortcuts for animations:
100.0.tweenTo(200.0); // Tween(begin: 100.0, end: 200.0)
Colors.red.tweenTo(Colors.blue); // ColorTween(...)
0.0.tweenTo(100.0).curved(Curves.easeInOut); // Apply acceleration
Replace your classic for-loop:
0.rangeTo(5); // [0, 1, 2, 3, 4, 5]
3.rangeTo(1); // [3, 2, 1]
var list = ["dog", "cat", "mouse"];
0.until(list.length); // [0, 1, 2]
list.forEachIndexed((index, value) {
// index: 0, value: "dog"
// index: 1, value: "cat"
// index: 2, value: "mouse"
});
???? API documentation
You can discover all features in the API documentation. Each feature is well documented with an example.
???? Improve
Supercharged will improve in future updates. Help me by reporting bugs, submit new ideas for features or anything else that you want to share.
- Just write an issue on GitHub. ✏️
- And don’t forget to hit the like button for this package ✌️
Download supercharged package source code on GitHub
https://github.com/felixblaschke/supercharged
Check out the details about supercharged package implementation on PUB
https://pub.dev/packages/supercharged
Provides the list of the opensource Flutter apps collection with GitHub repository.