Проблема в том, что когда я пытаюсь добавить новую задачу, поток не выдает новых изменений.
Это мои занятия:
Код: Выделить всё
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
)
)
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... any-update