df_collection 0.10.0 copy "df_collection: ^0.10.0" to clipboard
df_collection: ^0.10.0 copied to clipboard

A package designed to extend Dart collections by offering additional functionality.

pub tag buymeacoffee sponsor patreon discord instagram license


Summary #

A package designed to extend Dart collections by offering additional functionality. Every mutating- or merging-style function gives you a result that does not share mutable substructure with the inputs — you can keep working with the output without worrying about corrupting the data you started from. Pure synchronous, no platform deps; works on the VM, Flutter, web, and across isolates.

Example #

// Cartesian product from a list of sets.
{
  final items = [
    {1, 2},
    {3, 4, 5},
  ];
  final batches = items.cartesianProduct((a, b) => a + b);
  print(batches); // [4, 5, 6, 5, 6, 7]
}

// Split an iterable into chunks of a maximum size.
{
  final items = [1, 2, 3, 4, 5, 6, 7, 8, 9];
  final batches = items.chunked(4);
  print(batches); // ([1, 2, 3, 4], [5, 6, 7, 8], [9])
}

// Traverse a map using a list of keys and set a new value.
{
  var buffer = <dynamic, dynamic>{};
  buffer.traverse([1, 2, 3, 4], newValue: 5);
  print(buffer); // {1: {2: {3: {4: 5}}}}
  print(buffer.traverse([1, 2, 3, 4])); // 5
}

// Read a value from anywhere in a nested structure.
{
  final data = {
    'users': [
      {'name': 'Alice'},
      {'name': 'Bob', 'roles': {'editor': true}},
    ],
  };
  print(deepGet(data, 'users.1.name'));            // Bob
  print(deepGet(data, 'users.1.roles.editor'));    // true
  print(deepGet(data, 'users.99.name'));           // null (safe)
}

// Deeply merge two structures. The result is fully disjoint from `a` and
// `b` — mutating it can never corrupt the inputs.
{
  final a = {
    'patient': {'id': 'P-001', 'flags': ['A']},
  };
  final b = {
    'patient': {'flags': ['B'], 'dose_mg': 5},
  };
  final merged = mergeDataDeep(a, b);
  print(merged);
  // {patient: {id: P-001, flags: [B], dose_mg: 5}}
}

// Flatten nested JSON into a single-level map of paths.
{
  final flat = JsonUtility.i.flattenJson({
    'user': {'name': 'Alice', 'address': {'city': 'Sydney'}},
    'tags': ['vip', 'beta'],
  });
  print(flat);
  // {user.name: Alice, user.address.city: Sydney, tags.0: vip, tags.1: beta}
}

🔍 For more information, refer to the API reference.


💬 Contributing and Discussions #

This is an open-source project, and we warmly welcome contributions from everyone, regardless of experience level. Whether you're a seasoned developer or just starting out, contributing to this project is a fantastic way to learn, share your knowledge, and make a meaningful impact on the community.

☝️ Ways you can contribute #

  • Find us on Discord: Feel free to ask questions and engage with the community here: https://discord.gg/gEQ8y2nfyX.
  • Share your ideas: Every perspective matters, and your ideas can spark innovation.
  • Help others: Engage with other users by offering advice, solutions, or troubleshooting assistance.
  • Report bugs: Help us identify and fix issues to make the project more robust.
  • Suggest improvements or new features: Your ideas can help shape the future of the project.
  • Help clarify documentation: Good documentation is key to accessibility. You can make it easier for others to get started by improving or expanding our documentation.
  • Write articles: Share your knowledge by writing tutorials, guides, or blog posts about your experiences with the project. It's a great way to contribute and help others learn.

No matter how you choose to contribute, your involvement is greatly appreciated and valued!

☕ We drink a lot of coffee... #

If you're enjoying this package and find it valuable, consider showing your appreciation with a small donation. Every bit helps in supporting future development. You can donate here: https://www.buymeacoffee.com/dev_cetera

LICENSE #

This project is released under the MIT License. See LICENSE for more information.

4
likes
160
points
512
downloads

Documentation

API reference

Publisher

verified publisherdev-cetera.com

Weekly Downloads

A package designed to extend Dart collections by offering additional functionality.

Homepage
Repository (GitHub)
View/report issues

Topics

#collection #json #list #map #utils

Funding

Consider supporting this project:

www.buymeacoffee.com
www.patreon.com
github.com

License

MIT (license)

Dependencies

collection, df_type

More

Packages that depend on df_collection