insertEvery<T> method

List<T> insertEvery<T>(
  1. T builder(
    1. T item
    ), {
  2. T? header,
  3. T? footer,
})

Implementation

List<T> insertEvery<T>(T Function(T item) builder, {T? header, T? footer}) {
  final list = this
      .expand((item) sync* {
        final newItem = builder(item);

        if (newItem != null) {
          yield newItem;
        }

        yield item;
      })
      .skip(1)
      .toList()
      .cast<T>();

  if (header != null) {
    list.insert(0, header);
  }

  if (footer != null) {
    list.add(footer);
  }

  return list;
}