pickValue<T> static method
Future<T?>
pickValue<
T>( - List<T> items, {
- T? selected,
- String? title,
- Widget onItemView(
- T
)?,
- Widget? onTitle(
- T
)?,
- Widget? onSubtitle(
- T
)?,
- Widget? onLeading(
- T
)?,
- Widget? onTrailing(
- T
)?,
- List<Widget>? aboveWidgets,
- List<Widget>? belowWidgets,
- DialogWidth? width,
- 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);
});
}