Сбор потока не производит никаких обновленийAndroid

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

Сообщение Anonymous »

В примере проекта у меня есть модель представления с двумя вариантами использования. Оба варианта использования вызывают один и тот же репозиторий. Через поток извлекается список задач, который хранит репозиторий в StateFlow. Другой предоставляет метод добавления дополнительных задач в этот StateFlow.
Проблема в том, что когда я пытаюсь добавить новую задачу, поток не выдает новых изменений.
Это мои занятия:

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

class TaskRepositoryImpl @Inject constructor() : TaskRepository {

private val initialTaskBusiness = mutableListOf(
TaskBusiness(id = 1, text = "Task1"),
TaskBusiness(id = 2, text = "Task2"),
TaskBusiness(id = 3, text = "Task3")
)

private val _tasksFlow = MutableStateFlow(initialTaskBusiness.toList())
private val tasksFlow: StateFlow = _tasksFlow

override suspend fun getTask(): StateFlow = tasksFlow

override suspend fun addTask(task: TaskBusiness) {
_tasksFlow.update { _tasksFlow.value + task }
Log.d("DEBUGME ", "Added task")
}

override suspend fun deleteTask(task: TaskBusiness) {
_tasksFlow.update { _tasksFlow.value.filter { it.id != TaskDB(task).id } }
}

}

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

class GetTasksUseCase @Inject constructor(private val repository: TaskRepository,) {

suspend operator fun invoke(): Flow = repository.getTask()

}

class AddTaskUseCase @Inject constructor(private val repository: TaskRepository,) {

suspend operator fun invoke(taskBusiness: TaskBusiness) {     repository.addTask(taskBusiness) }

}

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

@HiltViewModel
class TaskViewModel @Inject constructor(
private val getTasksUseCase: GetTasksUseCase,
private val addTaskUseCase: AddTaskUseCase,
) : ViewModel() {

private val _tasks: MutableStateFlow = MutableStateFlow(emptyList())
val tasks get() = _tasks.asStateFlow()

init {
fetchTasks()
}

private fun fetchTasks() {
viewModelScope.launch {
getTasksUseCase().map { taskListBusiness ->
taskListBusiness.map { TaskViewEntry(it) }
}.collect { taskList ->
Log.d("DEBUGME ", "Fetched tasks: $taskList")
_tasks.value = taskList
}
}
}

fun onTaskAdded(text: String) {
viewModelScope.launch {
addTaskUseCase(
TaskBusiness(
text = text
)
)
}
}

}
Даже если модель представления собирает этот поток, она не производит никаких выбросов. Даже если я отлаживаю, он никогда не создает новое обновление в viewModel, даже если данные StateFlow изменяются. Кроме того, если я отлаживаю TaskFlow, я получаю 0 nCollectors. Я пытался принудительно ввести новое значение при добавлении списка в пустой список или убедиться, что новый список является новым значением, чтобы вызвать реактивность. Я пытался реализовать потоки разными способами, но ни разу не смог добиться реактивности. Что я делаю не так? Следующим шагом является создание localDataSource, который заменяет хранилище в памяти комнатным DAO, но изначально хочет работать по памяти.

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Сбор потока не производит никаких обновлений
    Anonymous » » в форуме Android
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Сбор потока не производит никаких обновлений
    Anonymous » » в форуме Android
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • ASP.NET CORE IIS Project не работает и не производит никаких журналов
    Anonymous » » в форуме C#
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • VtkextractunstructuredGrid не производит никаких выводов в оболочке ParaView Python
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • IntelliJ не показывает никаких ошибок в синтаксисе/не дает никаких предложений
    Anonymous » » в форуме JAVA
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous

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