MultiPickerSheetBuilder

class MultiPickerSheetBuilder<T>(title: String = "请选择", items: List<Set<T>>, itemText: (Int, T) -> String = { _, item -> item.toString() }, textStyle: TextStyle = AppText.Normal.Title.default, selectedItems: List<T> = items.map { it.first() }, cancelText: String = "取消", confirmText: String = "确定", onCancelClick: suspend CoroutineScope.() -> Boolean = { true }, onConfirmClick: suspend CoroutineScope.(List<T>) -> Boolean = { true }) : SheetBuilder

多列滚轮选择器底部弹窗构建器

从底部弹出的多列滚轮选择面板,包含标题栏(取消/确定按钮)和多列并排的滚轮选择器。 适用于需要多维度同时选择的场景(如省市区联动、年月日选择等)。 确认后通过 onConfirmClick 回调返回各列选中项组成的列表。

Author

d10ng

Parameters

title

标题文字,默认 "请选择"

items

每列的可选项集合列表,列表长度决定列数,每个 Set 不可为空

itemText

选项文字转换函数,第一个参数为列索引(从 0 起),第二个为选项值

textStyle

选项文字样式,默认 AppText.Normal.Title.default

selectedItems

各列当前选中项列表,长度须与 items 一致,默认每列取第一项

cancelText

取消按钮文字,默认 "取消"

confirmText

确定按钮文字,默认 "确定"

onCancelClick

取消按钮点击回调,返回 true 则自动关闭弹窗

onConfirmClick

确定按钮点击回调,参数为各列选中项列表,返回 true 则自动关闭弹窗

Type Parameters

T

选项数据类型

Constructors

Link copied to clipboard
constructor(title: String = "请选择", items: List<Set<T>>, itemText: (Int, T) -> String = { _, item -> item.toString() }, textStyle: TextStyle = AppText.Normal.Title.default, selectedItems: List<T> = items.map { it.first() }, cancelText: String = "取消", confirmText: String = "确定", onCancelClick: suspend CoroutineScope.() -> Boolean = { true }, onConfirmClick: suspend CoroutineScope.(List<T>) -> Boolean = { true })

Properties

Link copied to clipboard
Link copied to clipboard
var topMargin: @Composable () -> Dp
Link copied to clipboard
val visibleFlow: MutableStateFlow<Boolean>

Functions

Link copied to clipboard
open override fun Build()

构建弹窗内容

Link copied to clipboard
fun dismiss()

隐藏弹窗

Link copied to clipboard
fun SheetBuilder.TitleBar(title: String = "请选择", cancelText: String = "取消", confirmText: String = "确定", onCancelClick: suspend CoroutineScope.() -> Boolean = { true }, onConfirmClick: suspend CoroutineScope.() -> Boolean = { true })

弹窗标题栏