Android Jetpack Compose — составная функция перекомпоновывается каждый раз при изменении значения текстового поля ⇐ Android
Android Jetpack Compose — составная функция перекомпоновывается каждый раз при изменении значения текстового поля
Я использую TextField для получения пользовательского ввода и использую поток состояний для обработки состояния/значения текста в модели представления.
Дело в том, что каждый раз, когда значение TextField изменяется, функция HomeContent() перекомпоновывается.
Выходное изображение инспектора макетов Мой вопрос: нормально ли, что вся функция HomeContent() перестраивается только потому, что значение TextField изменяется, или есть способ избежать перекомпозиции функции? Модель просмотра
класс MyViewModel() : ViewModel() { частный val _nameFlow = MutableStateFlow("") val nameFlow = _nameFlow.asStateFlow() забавное updateName(имя: String) { _nameFlow.value = имя } } Основная активность
класс MainActivity : ComponentActivity() { частный val myViewModel от viewModels() переопределить fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { AppArchitectureTheme { HelloScreen(myViewModel) } } } } Домашний экран
@Composable весело HelloScreen (viewModel: MyViewModel) { val name = viewModel.nameFlow.collectAsState() ПриветСодержимое( ProvideName = {имя.значение}, onNameChange = {viewModel.updateName(it) }) } @Композитный весело HelloContent( предоставитьИмя: () -> Строка, onNameChange: (String) -> Единица измерения ) { Столбец (модификатор = Modifier.padding(16.dp)) { Текст( текст = "Привет,", модификатор = Modifier.padding(дно = 8.dp), стиль = MaterialTheme.typography.h5 ) Очерченноетекстовое поле( значение = обеспечитьИмя(), onValueChange = { onNameChange (оно) }, метка = { Текст («Имя») } ) Кнопка( onClick = {} ) { Text(text = «Кнопка-пустышка») } } }
Я использую TextField для получения пользовательского ввода и использую поток состояний для обработки состояния/значения текста в модели представления.
Дело в том, что каждый раз, когда значение TextField изменяется, функция HomeContent() перекомпоновывается.
Выходное изображение инспектора макетов Мой вопрос: нормально ли, что вся функция HomeContent() перестраивается только потому, что значение TextField изменяется, или есть способ избежать перекомпозиции функции? Модель просмотра
класс MyViewModel() : ViewModel() { частный val _nameFlow = MutableStateFlow("") val nameFlow = _nameFlow.asStateFlow() забавное updateName(имя: String) { _nameFlow.value = имя } } Основная активность
класс MainActivity : ComponentActivity() { частный val myViewModel от viewModels() переопределить fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { AppArchitectureTheme { HelloScreen(myViewModel) } } } } Домашний экран
@Composable весело HelloScreen (viewModel: MyViewModel) { val name = viewModel.nameFlow.collectAsState() ПриветСодержимое( ProvideName = {имя.значение}, onNameChange = {viewModel.updateName(it) }) } @Композитный весело HelloContent( предоставитьИмя: () -> Строка, onNameChange: (String) -> Единица измерения ) { Столбец (модификатор = Modifier.padding(16.dp)) { Текст( текст = "Привет,", модификатор = Modifier.padding(дно = 8.dp), стиль = MaterialTheme.typography.h5 ) Очерченноетекстовое поле( значение = обеспечитьИмя(), onValueChange = { onNameChange (оно) }, метка = { Текст («Имя») } ) Кнопка( onClick = {} ) { Text(text = «Кнопка-пустышка») } } }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Jetpack Compose, как избежать двойного вызова текстового поля при изменении значения?
Anonymous » » в форуме Android - 0 Ответы
- 21 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Кнопка со значком Jetpack Compose в декораторе TextField не перекомпоновывается
Anonymous » » в форуме Android - 0 Ответы
- 25 Просмотры
-
Последнее сообщение Anonymous
-