APP_NEW/lib/Extension/iterable.dart
2025-03-11 21:17:14 +08:00

54 lines
1.2 KiB
Dart

import 'package:flutter/material.dart';
extension IterableExt on Iterable<Widget> {
Iterable<Widget> separator(Widget element) sync* {
final iterator = this.iterator;
if (iterator.moveNext()) {
yield iterator.current;
while (iterator.moveNext()) {
yield element;
yield iterator.current;
}
}
}
Iterable<Widget> padding(EdgeInsetsGeometry padding) sync* {
final iterator = this.iterator;
while (iterator.moveNext()) {
yield Padding(
padding: padding,
child: iterator.current,
);
}
}
Iterable<Widget> 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<Widget> 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,
);
}
}