Предпочтенияdatastore считывает данные из общего метода

#android #kotlin

Вопрос:

Привет, вместо того, чтобы читать данные по отдельности из хранилища предпочтений, я пытаюсь найти общий метод, который означает передачу данных возврата ключа, связанных с ключом, но он не работает..

 suspend fun <T> getData(key: Preferences.Key<T>): Flow<String> {
        val value: Flow<String> = context.dataStore.data
            .map { preferences ->
                preferences[key] ?: ""
            }
        return value
    }
 

Комментарии:

1. Вы передаете строковый тип в потоке, вместо этого передайте T.

Ответ №1:

Вы можете создать функцию, подобную этой:

 private fun <T> getData(key: Preferences.Key<T>) = dataStore.data.map {
        it[key]
    }
 

и назовите это так:

         val key = stringPreferencesKey("username")
        val data = getData(key)
        GlobalScope.launch {
            data.collect {
                Log.d("Data-", it.toString())
            }
        }
 

Комментарии:

1. @karteekthati Вы можете отметить ответ как принятый, если он работает для вас.