具有多个字段的多进程 PreferencesDataStore

问题描述 投票:0回答:1

Google 为 DataStore 的多进程版本提供的示例仅包含设置中的一个字段:

data class Settings(
   val lastUpdate: Long
)

那么更新代码是:

scope.launch {
   dataStore.updateData {
       Settings(lastUpdate = System.currentTimeMillis())
   }
}

但是,这只适用于我有一个字段的情况。 当我有两个字段时会发生什么? 比如我的设置:

数据类设置(

    val bypassEnabled: Boolean,
    val clientMode: ProvisionClientMode
)

它不会让我这样做:

datastore.updateData {Settings(clientMode = ProvisionClientMode.ACTIVE_MODE) }

因为它需要所有字段的值。

我可以进行“读取”并通过更改来克隆它,但这似乎是错误的。

我在这里遗漏了什么吗?

android android-preferences datastore
1个回答
0
投票
dataStore.updateData { currentSettings ->
     currentSettings.copy(clientMode = ProvisionClientMode.ACTIVE_MODE)
 }

我觉得可以通过复制现有的来解决。

© www.soinside.com 2019 - 2024. All rights reserved.