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, что обеспечивает реактивную передачу данных.