我可以在我的Compose应用程序中写这样的东西:
var isDroppable by remember { mutableStateOf(false) }
val (textFieldValue, setTextFieldValue) = remember { mutableStateOf(TextFieldValue()) }
TextField(
value = textFieldValue,
onValueChange = setTextFieldValue,
modifier = Modifier
.offset(500.dp, 100.dp)
.requiredSize(200.dp, 200.dp)
.border(4.dp, if (isDroppable) Color.Green else Color.Red)
.onExternalDrag(
onDragStart = { externalDragValue ->
isDroppable = externalDragValue.dragData is androidx.compose.ui.DragData.Text
},
onDragExit = {
isDroppable = false
},
onDrop = { externalDragValue ->
isDroppable = false
val dragData = externalDragValue.dragData
if (dragData is androidx.compose.ui.DragData.Text) {
setTextFieldValue(textFieldValue.copy(
text = textFieldValue.text.substring(0, textFieldValue.selection.start) +
dragData.readText() +
textFieldValue.text.substring(textFieldValue.selection.end),
selection = TextRange(textFieldValue.selection.end)
))
}
},
)
)
然后我可以打开记事本,键入一些文本,然后将这些文本拖动到Compose应用程序中。
我的问题是:如何得到相反的结果?
如果我在Compose应用程序中选择了一些文本,我应该能够将其拖回记事本,根据是否按住Ctrl移动或复制它,这与本机应用程序中的文本组件相同。