Android Jetpack Compose — составная функция перекомпоновывается каждый раз при изменении значения текстового поляAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Android Jetpack Compose — составная функция перекомпоновывается каждый раз при изменении значения текстового поля

Сообщение Anonymous »


Я использую 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 = «Кнопка-пустышка») } } }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»