Open12

DataStore を使ってみる

tkttkt

ただ、今管理したいのは単一の値なので, TaskTaskRepository もいない。

tkttkt
class TextViewModel(private val userPreferencesRepository: UserPreferencesRepository) : ViewModel() {
    private val userPreferencesFlow = userPreferencesRepository.userPreferencesFlow
    private val textUiModelFlow = combine(
        userPreferencesFlow
    ) { userPreferences: UserPreferences ->
        return@combine TextUiModel(
            textColorText = userPreferences.textColorText
        )
    }
}

こう書くと combine がエラーを吐く。
combine は二つ以上の値を監視するためのものらしいのでそれはそう

tkttkt

ただ、combine 以外で、 userPreferencesFlow から viewModel 用の field を抜き出す方法がわからない

tkttkt

Flow から livedata に切り替えられればとりあえず実装はできるはず

tkttkt

private final val userPreferencesFlow: Flow<UserPreferences>.asLiveData()
-> Unresolved reference: asLiveData

どうして…

tkttkt

Flow は asLiveData で LiveData に変換できるんじゃないのか

tkttkt

ViewModel なしでとりあえず呼び出せるかやってみる

tkttkt

Activity から呼び出そうとして、

has no zero argument constructor

と怒られた。

class UserPreferencesRepository private constructor(context: Context) {

なぜここを private にしているのか、そして、ここの値はどのタイミングで入っているのか…

tkttkt

private 外して、 onCreatelateinit するようにした

tkttkt

やり方違ってそうだけど何が違うのかわからん