1. 更新userPreferencesFlow
private val userPreferencesFlow = userPreferencesRepository.userPreferencesFlow
以此取代 showCompletedFlow 和 sortOrderFlow
2. 修改 tasksUiModelFlow
因此1 的修改
private val tasksUiModelFlow = combine(
repository.tasks,
userPreferencesFlow
) { tasks: List<Task>, userPreferences: UserPreferences ->
return@combine TasksUiModel(
tasks = filterSortTasks(
tasks,
userPreferences.showCompleted,
userPreferences.sortOrder
),
showCompleted = userPreferences.showCompleted,
sortOrder = userPreferences.sortOrder
)
}
3. 修改更新函数
均使用了协程调用, (dataStore.updateData)
fun showCompletedTasks(show: Boolean) {
viewModelScope.launch {
userPreferencesRepository.updateShowCompleted(show)
}
}
fun enableSortByDeadline(enable: Boolean) {
viewModelScope.launch {
userPreferencesRepository.enableSortByDeadline(enable)
}
}
fun enableSortByPriority(enable: Boolean) {
viewModelScope.launch {
userPreferencesRepository.enableSortByPriority(enable)
}
}
至此, DataStore 的介绍已全部结束了.
官网介绍和源码参考下面的链接
参考文献:
https://developer.android.com/codelabs/android-proto-datastore#8
https://github.com/googlecodelabs/android-datastore/tree/proto_datastore
--- End --
网友评论