pickValue<T> static method

Future<T?> pickValue<T>(
  1. List<T> items, {
  2. T? selected,
  3. String? title,
  4. Widget onItemView(
    1. T
    )?,
  5. Widget? onTitle(
    1. T
    )?,
  6. Widget? onSubtitle(
    1. T
    )?,
  7. Widget? onLeading(
    1. T
    )?,
  8. Widget? onTrailing(
    1. T
    )?,
  9. List<Widget>? aboveWidgets,
  10. List<Widget>? belowWidgets,
  11. DialogWidth? width,
  12. bool withOKCancel = false,
})

Implementation

static Future<T?> pickValue<T>(
  List<T> items, {
  T? selected,
  String? title,
  Widget Function(T)? onItemView,
  Widget? Function(T)? onTitle,
  Widget? Function(T)? onSubtitle,
  Widget? Function(T)? onLeading,
  Widget? Function(T)? onTrailing,
  List<Widget>? aboveWidgets,
  List<Widget>? belowWidgets,
  DialogWidth? width,
  bool withOKCancel = false,
}) async {
  return await showDialogX((b) {
    b.init(result: selected);
    return b.buildList(items, builder: (iic) {
      T item = iic.item;
      bool checked = b.result == item;
      if (onItemView != null) {
        return onItemView(item).inkWell(onTap: () {
          b.setResult(item);
          if (withOKCancel) {
            b.updateState();
          } else {
            b.clickOK();
          }
        });
      }
      return ListTile(
          title: onTitle?.call(item) ?? item.toString().text(),
          subtitle: onSubtitle?.call(item),
          leading: onLeading?.call(item),
          trailing: onTrailing?.call(item) ?? (checked ? Icons.check.icon() : null),
          onTap: () {
            b.setResult(item);
            if (withOKCancel) {
              b.updateState();
            } else {
              b.clickOK();
            }
          });
    }, aboveWidgets: aboveWidgets, belowWidgets: belowWidgets, dialogWidth: width, title: title, ok: withOKCancel, cancel: withOKCancel);
  });
}