interleave_iterator

A Dart package that adds interleave and interleaveFactory extensions method to any Iterable. Interleaving inserts a separator element between every pair of adjacent elements, without adding one before the first or after the last.

Usage

import 'package:interleave_iterator/interleave_iterator.dart';

// interleave: insert the same separator value between every pair of elements.
[1, 2, 3].interleave(0).toList(); // [1, 0, 2, 0, 3]

// interleaveFactory: the factory is called once per gap, producing a fresh
// instance each time — useful for Flutter widgets that must not be reused.
final widgets = tiles.interleaveFactory(() => const Divider()).toList();

The returned iterable is lazy: the factory is not called until the iterable is consumed. If the source has fewer than two elements, no separator is produced.

Edge cases

Input Output
[] []
[x] [x]
[x, y] [x, sep, y]
[x, y, z] [x, sep, y, sep, z]

Installing

Add the package to your pubspec.yaml:

dependencies:
  interleave_iterator: ^0.1.0

Libraries

interleave_iterator
Provides the Interleaver extension, which adds Interleaver.interleave and Interleaver.interleaveFactory methods to any Iterable.