Экран создания сообщения не меняет композицию после изменения состоянияAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Экран создания сообщения не меняет композицию после изменения состояния

Сообщение Anonymous »

У меня есть ViewModel с StateFlow. Каждый раз, когда нажимается кнопка, я меняю значение состояния, но по какой-то причине экран не реагирует на это изменение.
Я знаю, что значение состояния меняется, потому что когда я поворачиваю экран и там полная перекомпозиция, показывает то, что должно показывать с измененным значением, но только после поворота экрана. Я хочу, чтобы изменения на экране происходили без его поворота.
Это моя модель представления:

Код: Выделить всё

@HiltViewModel
class CragToposViewModel @Inject constructor() : ViewModel() {
private var _state = MutableStateFlow(CragToposState(true))
val state = _state.asStateFlow()
}
Это мои модели:

Код: Выделить всё

data class CragToposState(
var zoomedOutImage: Boolean,
)
А это мой экран:

Код: Выделить всё

@Composable
fun CragToposScreen(
navController: NavController,
cragToposViewModel: CragToposViewModel = hiltViewModel(),
) {
val state = cragToposViewModel.state.collectAsState()

CragToposContent(
navController = navController,
state = state,
)
}

@Composable
fun CragToposContent(
navController: NavController,
state: State,
) {
val context = LocalContext.current
val scrollState = rememberScrollState()

if (state.value.zoomedOutImage) {
// SOME OTHER STUFF HERE
ZoomButton(state)
} else {
// SOME OTHER STUFF HERE
ZoomButton(state)
}
}

@Composable
fun ZoomButton(state: State) {
Box(
modifier = Modifier
.clickable { state.value.zoomedOutImage = !state.value.zoomedOutImage },
) {
Icon(
painter = if (state.value.zoomedOutImage)
painterResource(R.drawable.icon_zoom_in)
else painterResource(R.drawable.icon_zoom_out),
contentDescription = "",
)
}
}
Правильно ли я задаю новое значение состояния?
Нужен ли мне StateFlow здесь ? Я просто хочу, чтобы состояние менялось после нажатия кнопки
Почему я должен использовать State и не могу просто использовать CragToposState для развлечения CragToposContent ?

Подробнее здесь: https://stackoverflow.com/questions/790 ... ate-change
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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