Почему автор использует сложную структуру во ViewModel? - PullRequest
0 голосов
/ 01 апреля 2020

Я изучаю сопрограммы Kotlin.

Код А из художественного .

Мне очень странно, поэтому автор использует сложную структуру. Я думаю, что Код B может выполнять ту же работу простым способом.

Код A

class MainViewModel(private val repository: TitleRepository) : ViewModel() {

    ...

    private val _spinner = MutableLiveData<Boolean>(false)

    /**
     * Show a loading spinner if true
     */
    val spinner: LiveData<Boolean>
        get() = _spinner

    ...

    private fun launchDataLoad(block: suspend () -> Unit): Unit {
        viewModelScope.launch {
            try {
                _spinner.value = true
                block()
            } catch (error: TitleRefreshError) {
                _snackBar.value = error.message
            } finally {
                _spinner.value = false
            }
        }
    }
}

Код B

class MainViewModel(private val repository: TitleRepository) : ViewModel() {

    ...

    val spinner = MutableLiveData<Boolean>(false)

    ...

    private fun launchDataLoad(block: suspend () -> Unit): Unit {
        viewModelScope.launch {
            try {
                spinner.value = true
                block()
            } catch (error: TitleRefreshError) {
                _snackBar.value = error.message
            } finally {
                spinner.value = false
            }
        }
    }
}
...