import 'package:flutter/material.dart'; extension IterableExt on Iterable { Iterable separator(Widget element) sync* { final iterator = this.iterator; if (iterator.moveNext()) { yield iterator.current; while (iterator.moveNext()) { yield element; yield iterator.current; } } } Iterable padding(EdgeInsetsGeometry padding) sync* { final iterator = this.iterator; while (iterator.moveNext()) { yield Padding( padding: padding, child: iterator.current, ); } } Iterable firstPadding(EdgeInsetsGeometry padding) sync* { final iterator = this.iterator; bool isFirst = true; while (iterator.moveNext()) { if (isFirst) { isFirst = false; yield Padding( padding: padding, child: iterator.current, ); } else { yield iterator.current; } } } Iterable lastPadding(EdgeInsetsGeometry padding) sync* { final iterator = this.iterator; Widget? previous; while (iterator.moveNext()) { if (previous != null) yield previous; previous = iterator.current; } yield Padding( padding: padding, child: previous, ); } }