dataStore
dataStore
dependencies
implementation "androidx.datastore:datastore-preferences:1.0.0"
setup repo
-
create a new kotlin class called
xxxPreferenceRepository
, this class takes one parameterdataStore: DataStore<Preference>
-
list every element you want to save
val themeMode: Flow<String>
...
- define saveXXX method
suspend fun saveThemePreference(themeMode: String){
dataStore.edit { preferences ->
preferences[THEME_MODE] = themeMode
}
}
- put key for dataStore in companion object
private companion object {
val THEME_MODE = stringPreferencesKey("theme_mode")
const val TAG = "UserPreferencesRepo"
}
- config dependency injection in application
// create A dataStore named SETTINGS
private const val SETTINGS = "settings"
private val Context.dataStore: DataStore<Preferences> by preferencesDataStore(
name = SETTINGS
)
class AudioApplication: Application(){
lateinit var container: AppContainer
lateinit var userPreferencesRepository: UserPreferencesRepository
override fun onCreate() {
super.onCreate()
container = AppDataContainer(this)
userPreferencesRepository = UserPreferencesRepository(dataStore)
}
}