Sobes.tech
Junior — Middle

How can data be transferred between ViewModel and Fragment using Flow?

sobes.tech AI

Answer from AI

To pass data between ViewModel and Fragment using Flow, you can use StateFlow or SharedFlow in ViewModel and subscribe to them in the fragment.

Example using StateFlow:

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

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

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

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        lifecycleScope.launchWhenStarted {
            viewModel.state.collect { data ->
                // Update UI
                textView.text = data
            }
        }
    }
}

Thus, the ViewModel updates data in MutableStateFlow, and the Fragment subscribes to changes via collect, ensuring reactive data transfer.

How can data be transferred between ViewModel and… - sobes.tech