kotlin 无法读取或写入android数据存储

hpcdzsge  于 2023-02-19  发布在  Kotlin
关注(0)|答案(1)|浏览(149)

我有一个问题,安卓datastore .我不知道我不能写或我不能读,但它不工作的任何方式这里是我的代码:

class DataStoreProvider(private val context: Context) {
    private val Context.dataStore: DataStore<Preferences> by 
      preferencesDataStore("settings")
    private val phoneNumberKey = stringPreferencesKey("phoneNumberPreferencesKey")
    private val passwordKey = stringPreferencesKey("passwordPreferencesKey")

    fun readPhoneNumber(): String? {
        var phoneNumber: String? = null
        context.dataStore.data
            .map { preferences ->
                phoneNumber = preferences[phoneNumberKey]
            }
        return phoneNumber
    }

    suspend fun savePhoneNumber(phoneNumber: String) {
        context.dataStore.edit { setting ->
            setting[phoneNumberKey] = phoneNumber
        }
    }
}

我从Dispatchers.IO上的viewModelScope.launch函数调用这些函数。
而且我使用1.0.0版本的数据存储,你知道我该怎么做吗?

ql3eal8s

ql3eal8s1#

如下所示重构您的readPhoneNumber

suspend fun readPhoneNumber(): String? {
    return context.dataStore.data
      .map { preferences -> preferences[phoneNumberKey] ?: null }
      .first()
}

相关问题