superpower 0.4.0 copy "superpower: ^0.4.0" to clipboard
superpower: ^0.4.0 copied to clipboard

discontinued

Lists, Iterables and Maps on steroids! 🦄 Extends Lists with negative indices, sort, group, distinct, slice, flatten etc. Inspired by Kotlin.

example/main.dart

import 'package:superpower/superpower.dart';

class Person {
  String name;
  int age;
  $List<String> hobbies;

  Person(this.name, this.age, this.hobbies);
}

var david = Person("David", 24, $(["biking", "swimming"]));
var linda = Person("Linda", 12, $(["cooking", "friends"]));
var amanda = Person("Amanda", 24, $(["friends", "swimming"]));
var paolo = Person("Paolo", 18, $(["swimming", "cooking"]));

void main() {
  var persons = $([david, linda, amanda, paolo]);

  var averageAge = persons.averageBy((p) => p.age);
  print(averageAge);
  // 19.5

  var hobbies = persons.flatMap((p) => p.hobbies).distinct();
  print(hobbies);
  // ["biking", "swimming", "music", "cooking", "friends"]

  var namesByHobbies = hobbies.associateWith((hobby) {
    return persons.mapNotNull((person) {
      if (person.hobbies.contains(hobby))
        return person.name;
      else
        return null;
    });
  });
  print(namesByHobbies);
  // {
  //   "biking": ["David"],
  //   "swimming": ["David", "Amanda", "Paolo"],
  //   "cooking": ["Linda" "Paolo"],
  //   "friends": ["Linda" "Amanda"]
  // }

  var sorted = persons.sortedBy((p) => p.age).thenByDescending((p) => p.name);
  print(sorted);
  // [Linda, Paolo, David, Amanda]

  var groupedByAge = persons.groupBy((p) => p.age);
  print(groupedByAge);
  // {
  //   12: [Linda],
  //   18: [Paolo],
  //   24: [David, Amanda]
  // }

  var legalAge = persons.partition((p) => p.age >= 21);
  print(legalAge);
  // [
  //  [Linda, Paolo],
  //  [David, Amanda]
  // ]

  var sameHobbies = david.hobbies.intersect(amanda.hobbies);
  print(sameHobbies);
  // ["swimming"]
}
2
likes
40
pub points
28%
popularity

Publisher

unverified uploader

Lists, Iterables and Maps on steroids! 🦄 Extends Lists with negative indices, sort, group, distinct, slice, flatten etc. Inspired by Kotlin.

Repository (GitHub)
View/report issues

License

MIT (LICENSE)

Dependencies

collection

More

Packages that depend on superpower