Зачем в CollectaSstateWithLifeCyclece для StateFlow необходимо начальное значение?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Зачем в CollectaSstateWithLifeCyclece для StateFlow необходимо начальное значение?

Сообщение Anonymous »

У меня есть ViewModel, которая выставляет Stateflow, представляющий состояние пользовательского интерфейса списка книг: < /p>

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

class BooksViewModel(private val getBooksUseCase: GetBooksUseCase) : ViewModel() {

val booksState: Flow = flow {
val result = getBooksUseCase()
result.onSuccess {
emit(BooksUiState.Success(it))
}.onFailure {
emit(BooksUiState.Error(it))
}
}.onStart {
emit(BooksUiState.Loading(true))
}.onCompletion {
emit(BooksUiState.Loading(false))
}.stateIn(
scope = viewModelScope,
started = SharingStarted.WhileSubscribed(5000),
initialValue = BooksUiState.Loading(true),
)
}
В моем @composable я собираю это состояние, используя collectaSstateWithLifeCycle :

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

@Composable
fun BookScreen(
onBackPressed: () -> Unit,
viewModel: BooksViewModel = koinViewModel()
) {
val uiState by viewModel.booksState.collectAsStateWithLifecycle(
initialValue = BooksUiState.Loading(true)
)

BackHandler(onBack = onBackPressed)

BookContent()
}
Поскольку Booksstate уже является Stateflow с первоначальным значением (bookistate.lading (true)) , почему нам нужно передавать начальную допуску collectaSstateWithlifeCycl снова?
.>

Подробнее здесь: https://stackoverflow.com/questions/795 ... -stateflow
Ответить

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

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

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

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

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