Экран создания сообщения не меняет композицию после изменения состояния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»