add ascending
to IterableExtension.sortedBy
#731
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
sortedBy
is one of the best extensions of this package.It allows us to easily sort, but we can't set if the order comparaison is ascending/descending, it always defaults to "natural ordering".
This PR simplifies this process so we can simply decide it based on the added
ascending
parameter in thesortedBy
extension.This is useful, because without it, we would have to do additional operations bringing either more boilerplate or additional computations. By adding this named boolean we can make it straightforward.
For many developers, especially those who might not be as familiar with comparators and more advanced functional programming concepts, having a straightforward boolean parameter makes the API more accessible and user-friendly.
The boolean
ascending
is a natural state. It’s a common need to toggle sort order, and doing so with a single extension method and a simple parameter makes the code more readable and maintainable. Adopting this familiar pattern insortedBy
makes it feel more intuitive and consistent, making the intent of the code clearer.Flutter itself uses this pattern for sorting, as we can see in
flutter/lib/src/material/data_table.dart
:I find this extension incredibly useful and have always relied on a version of it. I dedicated time to updating it for the community because I believe it addresses a fundamental and widely shared need across projects.
Thank you for taking the time to review this PR—I hope it proves valuable!
Added tests ✅
Retrocompatible ✅
Not a breaking change ✅
Contribution guidelines:
dart format
.Note that many Dart repos have a weekly cadence for reviewing PRs - please allow for some latency before initial review feedback.