Sobes.tech
Back to questions
Junior — Middle
70

Каким образом можно реализовать передачу данных между ViewModel и Fragment с помощью Flow?

Companies where asked
Мой СкладМой Склад

Answer from AI

sobes.tech AI

Для передачи данных между ViewModel и Fragment с помощью Flow можно использовать StateFlow или SharedFlow в ViewModel и подписываться на них во фрагменте.

Пример с использованием StateFlow:

// В ViewModel
class MyViewModel : ViewModel() {
    private val _state = MutableStateFlow("Initial data")
    val state: StateFlow<String> = _state

    fun updateData(newData: String) {
        _state.value = newData
    }
}

// В Fragment
class MyFragment : Fragment() {
    private val viewModel: MyViewModel by viewModels()

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        lifecycleScope.launchWhenStarted {
            viewModel.state.collect { data ->
                // Обновляем UI
                textView.text = data
            }
        }
    }
}

Таким образом, ViewModel обновляет данные в MutableStateFlow, а Fragment подписывается на изменения через collect, что обеспечивает реактивную передачу данных.