← Back to Foundation
dragAndDropTarget
Modifier
in
Foundation
. Since 1.6.0-alpha07Overview
Examples
Community Notes
@Composable
fun TextDragAndDropTargetSample(
eventSummary: String?,
onDragAndDropEventDropped: (DragAndDropEvent) -> Unit,
) {
val validMimeTypePrefixes = remember {
setOf(
ClipDescription.MIMETYPE_TEXT_INTENT,
"image/",
"text/",
"video/",
"audio/",
)
}
var backgroundColor by remember { mutableStateOf(Color.Transparent) }
Box(
modifier = Modifier
.fillMaxSize()
.dragAndDropTarget(
shouldStartDragAndDrop = accept@{ startEvent ->
val hasValidMimeType = startEvent.mimeTypes().any { eventMimeType ->
validMimeTypePrefixes.any(eventMimeType::startsWith)
}
hasValidMimeType
},
target = DragAndDropTarget(
onStarted = {
backgroundColor = Color.DarkGray.copy(alpha = 0.2f)
},
onDrop = { event ->
onDragAndDropEventDropped(event)
true
},
onEnded = {
backgroundColor = Color.Transparent
}
),
)
.background(backgroundColor)
.border(
width = 4.dp,
color = Color.Magenta,
shape = RoundedCornerShape(16.dp)
),
) {
when (eventSummary) {
null -> Text(
modifier = Modifier
.align(Alignment.Center),
text = "Drop anything here"
)
else -> Text(
modifier = Modifier
.padding(
horizontal = 16.dp,
vertical = 24.dp
)
.verticalScroll(rememberScrollState()),
text = eventSummary
)
}
}
}
Next ComponentBaseTextField →