Я создал диалоговое окно, и кнопка внутри диалогового окна имеет флаг isLoading, который показывает CircularProgressIndicator, когда он истинен. На кнопке отображается текст «Смотрите рекламу, чтобы прочитать книгу», если это ложь. Почему-то он продолжает загружаться и не показывает текст. Однако я могу нажать кнопку и перейти на другой экран, и это нормально. Нажатие кнопки не вызывает проблем, но пользовательский интерфейс (продолжает загрузку) имеет проблемы. Кажется, что пользовательский интерфейс не отражается на кнопке. Как я могу отобразить текст на кнопке вместо загрузки? Пожалуйста, помогите мне.
↓Внутри кнопки создания макета
content = {
when {
uiState.isLoading -> CircularProgressIndicator(modifier = Modifier.size(28.dp))
else -> Row(
verticalAlignment = Alignment.CenterVertically
) {
Text(
text = stringResource(id = R.string.watch_ads_to_read_book),
}
и логика isLoading приведена ниже
private fun buttonUiStateFlow(
key: String,
episodeType: BookEpisodeType?,
maxMovieCount: Int,
): Flow =
flow {
if (episodeType == BookEpisodeType.NORMAL && maxMovieCount > 0) {
emit(ButtonUiState(isLoading = true))
try {
val availableMovieCount = movieService.findTicketUsableMovieCount(key)
emit(ButtonUiState(maxCmCount = maxMovieCount, availableCmCount = availableMovieCount))
} catch (e: Throwable) {
emit(ButtonUiState(isError = true))
}
} else {
emit(null)
}
}
ButtonUiState
@Stable
data class ButtonUiState(
val isLoading: Boolean = false,
val isError: Boolean = false,
val availableCmCount: Int = 0,
)
Подробнее здесь: https://stackoverflow.com/questions/792 ... pack-compo
Загрузка не завершается нажатием кнопки, и в Jetpack Compose не отображается нужный мне пользовательский интерфейс. ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение