Я пытаюсь сделать несколько наложений в определенных позициях, выделяя и выделяя текстовые области в BasicTextField, и при этом иметь возможность дважды нажать, чтобы открыть этот раздел в другом представлении. Я получил хороший контур и выделение, сделав несколько холстов обрезанными по размеру их содержимого поверх BasicTextField. Я хотел бы изменить цвета и такие из этих основных моментов, как они постукивали. это просто, проблема в том, что холст использует событие касания, и курсор никогда не помещается/не перемещается в то место, которое пользователь нажимает на холсте. Итак, есть ли способ передать событие касания другому составному? Я не мог найти способ, чтобы холст обнаруживал событие указателя, не потребляя его, иначе это было бы более плавно.
Вот что у меня сейчас происходит, немного похудел
Box() {
BasicTextField(
// just somestyling modifiers
)
}
Canvas(
modifier = Modifier.pointerInput(Unit) {
awaitPointerEventScope {
while (true) {
val event = awaitPointerEvent()
when (event.type) {
PointerEventType.Release -> {
// Do Something
}
}
}
}
}
) {
// Draw the overlays
}
Честно говоря, не совсем уверен, как это сделать, поэтому куча поисков в Google не вернула ничего, что я мог бы использовать, чтобы получить событие указателя на оба этих компонуемых объекта.
Допустим, у меня есть экран с именем HomeScreen.
внутри HomeScreen у меня есть Card вот так:
var currentPosition by remember {
mutableStateOf(Offset(0F, 0F))
}
Card(
modifier = Modifier.onPointerEvent(PointerEventType.Move) {
currentPosition = it.changes.first().position)
)
вы можете просто иметь доступ к currentPosition везде на экране