buildAndJoinWidgets<T> static method

List<Widget> buildAndJoinWidgets<T>({
  1. required List<T> items,
  2. required Widget widgetBuilder(
    1. T item
    ),
  3. required Widget interleaved,
  4. bool startWithInterleaver = true,
  5. bool endWithInterleaver = true,
  6. Widget? title,
})

Builds widgets from items and joins them with an interleaved separator.

Parameters:

  • items: List of items to build widgets from
  • widgetBuilder: Function to build a widget for each item
  • interleaved: Separator widget to insert between items
  • startWithInterleaver: Whether to add separator before first item. Defaults to true
  • endWithInterleaver: Whether to add separator after last item. Defaults to true
  • title: Optional title widget to add at the beginning

Example:

List<Widget> widgets = CoolUtil.buildAndJoinWidgets(
  items: ['A', 'B', 'C'],
  widgetBuilder: (s) => Text(s),
  interleaved: Divider()
);

Implementation

static List<Widget> buildAndJoinWidgets<T>(
    {required List<T> items,
    required Widget Function(T item) widgetBuilder,
    required Widget interleaved,
    bool startWithInterleaver = true,
    bool endWithInterleaver = true,
    Widget? title}) {
  List<Widget> ret = [];

  if (title != null) {
    ret.add(title);
  }

  if (startWithInterleaver) {
    ret.add(interleaved);
  }

  for (var i in items) {
    ret.add(widgetBuilder(i));
    ret.add(interleaved);
  }

  if (!endWithInterleaver) {
    if (ret.isNotEmpty) {
      ret.removeLast();
    }
  }

  return ret;
}