FileUploadPattern
fun FileUploadPattern(pattern: FileUploadPatternState, modifier: Modifier = Modifier, content: @Composable (onClick: () -> Unit) -> Unit)(source)
High-level wrapper composable that integrates file upload pattern with any component.
This composable allows you to wrap any component (button, surface, image, etc.) with file upload functionality. The pattern handles all file picking logic while you control the UI trigger.
For displaying selected files, use PreviewFile or FileUploadList separately.
Parameters
pattern
modifier
Modifier to be applied to the container
content
Composable lambda that receives an onClick function to trigger file selection. This can be any component that accepts an onClick callback.
Samples
var selectedFiles by remember {
mutableStateOf<ImmutableList<UploadedFile>?>(null)
}
val pattern = rememberFileUploadPattern(
onFilesSelect = { files -> selectedFiles = files },
)
Column(modifier = Modifier.fillMaxWidth()) {
FileUploadPattern(pattern = pattern) { onClick ->
ButtonTinted(
onClick = onClick,
text = "Pick files",
icon = LeboncoinIcons.ImageOutline,
iconSide = IconSide.START,
modifier = Modifier.fillMaxWidth(),
)
}
VerticalSpacer(16.dp)
selectedFiles?.let { files ->
FileUploadList(
files = files,
onClearFile = { file ->
selectedFiles = selectedFiles?.filterNot { it == file }?.toImmutableList()
},
onClick = { file -> FileUploadDefaults.openFile(file) },
)
}
}Content copied to clipboard