diff --git a/lib/dart_extensions.dart b/lib/dart_extensions.dart index ee7ebdc..bb964c9 100644 --- a/lib/dart_extensions.dart +++ b/lib/dart_extensions.dart @@ -24,6 +24,7 @@ export 'package:dart_extensions/src/flutter/container.dart'; export 'package:dart_extensions/src/flutter/gesture_detector.dart'; export 'package:dart_extensions/src/flutter/navigation.dart'; export 'package:dart_extensions/src/flutter/padding.dart'; +export 'package:dart_extensions/src/equality.dart'; export 'package:dart_extensions/src/http.dart'; export 'package:dart_extensions/src/int.dart'; export 'package:dart_extensions/src/iterable.dart'; @@ -32,4 +33,3 @@ export 'package:dart_extensions/src/search_algorithms.dart'; export 'package:dart_extensions/src/sort_algorithms.dart'; export 'package:dart_extensions/src/string_ext.dart'; export 'package:dart_extensions/src/flutter/widgets.dart'; - diff --git a/lib/src/iterable.dart b/lib/src/iterable.dart index c0f60f9..a510ad8 100644 --- a/lib/src/iterable.dart +++ b/lib/src/iterable.dart @@ -27,7 +27,7 @@ extension CollectionsNullableExtensions on Iterable? { ///Returns `true` if this nullable iterable is either null or empty. bool get isEmptyOrNull => (this?.isEmpty ?? true); - /// Returns `true` if at least one element matches the given [predicate]. + /// Returns `true` if at least one element matches the given [predicate]. bool any(bool predicate(T element)) { if (this.isEmptyOrNull) return false; for (final element in this.orEmpty()) if (predicate(element)) return true; @@ -52,7 +52,9 @@ extension CollectionsNullableExtensions on Iterable? { /// the combination of them two. zip(Iterable iterable) sync* { if (iterable.isEmptyOrNull) return; - final iterables = List.empty()..add(this.orEmpty())..add(iterable); + final iterables = List.empty() + ..add(this.orEmpty()) + ..add(iterable); final iterators = iterables.map((e) => e.iterator).toList(growable: false); while (iterators.every((e) => e.moveNext())) { @@ -65,9 +67,10 @@ extension CollectionsExtensions on Iterable { ///Sorts elements in the array in-place according to natural sort order of the value returned by specified [selector] function. Iterable sortBy( TKey Function(T) keySelector, { - required EqualityComparer keyComparer, + EqualityComparer? keyComparer, }) { - return InternalOrderedIterable(this, keySelector, keyComparer, false); + return InternalOrderedIterable( + this, keySelector, keyComparer ?? EqualityComparer(), false); } /// Convert iterable to set @@ -205,7 +208,8 @@ extension CollectionsExtensions on Iterable { T firstOrDefault(T defaultValue) => firstOrNull ?? defaultValue; /// Will retrun new [Iterable] with all elements that satisfy the predicate [predicate], - Iterable whereIndexed(IndexedPredicate predicate) => _IndexedWhereIterable(this, predicate); + Iterable whereIndexed(IndexedPredicate predicate) => + _IndexedWhereIterable(this, predicate); /// /// Performs the given action on each element on iterable, providing sequential index with the element. @@ -365,7 +369,8 @@ extension CollectionsExtensions on Iterable { Iterable> chunks(int size) => partition(this, size); /// Creates a Map instance in which the keys and values are computed from the iterable. - Map associate(key(element), value(element)) => Map.fromIterable(this, key: key, value: value); + Map associate(key(element), value(element)) => + Map.fromIterable(this, key: key, value: value); /// Returns the first element matching the given [predicate], or `null` /// if element was not found.