pickValue<T> 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, - EdgeInsets? padding,
- bool separated = true,
- bool cancel = false,
- bool ok = false,
Implementation
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,
EdgeInsets? padding,
bool separated = true,
bool cancel = false,
bool ok = false,
}) async {
return showColumn(
isContentScrollable: true,
title: title,
cancel: cancel,
ok: ok,
aboveWidgets: aboveWidgets,
belowWidgets: belowWidgets,
padding: EdgeInsets.all(0),
onContent: (uc) {
if (!uc.hasResult) uc.setResult(selected);
return XListView(
items: items,
shrinkWrap: true,
padding: padding,
separator: separated,
itemView: (cii) {
var item = cii.item;
if (onItemView != null) return onItemView(item);
return ListTile(
title: onTitle?.call(item) ?? item.toString().titleMedium(),
subtitle: onSubtitle?.call(item),
leading: onLeading?.call(item),
trailing: onTrailing?.call(item) ?? (uc.getResult() == item ? Icons.check.icon() : null),
onTap: () {
uc.setResult(item);
if (ok) {
uc.updateState();
} else {
uc.pop(item);
}
},
);
},
);
},
);
}