В Compose 1.12 у SelectionContainer появился hoisted-state: SelectionState. Раньше весь механизм выделения был спрятан внутри текстовых полей. Теперь же стало возможно:
👉 читать выбранный текст реактивно
👉 выделять программно: всё / диапазон / по словам
👉 сбрасывать выделение
👉 искать цитату по всему контейнеру, даже если она размазана по нескольким
Text// Один SelectionState нельзя шарить между несколькими SelectionContainer
val state = rememberSelectionState()
SelectionContainer(state = state) {
Text("Text to be selected...")
}
val selectedTexts : List<AnnotatedString> = state.selectedTexts
Text("Выбрано символов: ${selectedTexts.sumOf { it.text.length }}")
#Compose