54 lines
1.2 KiB
Dart
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,
|
|
);
|
|
}
|
|
}
|