splitBetween method

List<List<T>> splitBetween(
  1. bool condition(
    1. T first,
    2. T second
    )
)

Implementation

List<List<T>> splitBetween(bool Function(T first, T second) condition) {
  if (isEmpty) return []; // إذا كانت القائمة فارغة، إرجاع قائمة فارغة.

  List<List<T>> result = []; // قائمة النتيجة التي ستحتوي على القوائم الفرعية.
  List<T> currentGroup = [first]; // المجموعة الحالية تبدأ بالعنصر الأول.

  for (int i = 1; i < length; i++) {
    if (condition(this[i - 1], this[i])) {
      // إذا تحقق الشرط، أضف المجموعة الحالية إلى النتيجة.
      result.add(currentGroup);
      currentGroup = []; // ابدأ مجموعة جديدة.
    }
    currentGroup.add(this[i]); // أضف العنصر الحالي إلى المجموعة.
  }

  if (currentGroup.isNotEmpty) {
    result.add(currentGroup); // أضف المجموعة الأخيرة.
  }

  return result;
}