Add syntactic sugar to your Android Preferences.
In your root build.gradle at the end of repositories:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}In your app build.gradle, add the dependency:
dependencies {
implementation 'com.github.liip:SweetPreferences:1.0.3'
}// Define a class that will hold the preferencesclassUserPreferences(sweetPreferences:SweetPreferences) {
// Default key is "counter"// Default value is "0"var counter:Int by sweetPreferences.delegate(0)
// Key is hardcoded to "usernameKey"// Default value is nullvar username:String? by sweetPreferences.delegate(null, "usernameKey") }
// Obtain a SweetPreferences instance with default SharedPreferencesval sweetPreferences =SweetPreferences.Builder().withDefaultSharedPreferences(context).build()
// Build a UserPreferences instanceval preferences =UserPreferences(sweetPreferences)
// Use the preferences in a type-safe manner
preferences.username ="John Doe"
preferences.counter =34If you have a custom SharedPreference instance, you can pass it to the SweetPreferences builder:
val customPreference =... // Obtain custom SharedPreferencesval sweetPreferences =SweetPreferences.Builder().with(customPreference).build()Other than accessing your preferences as Kotlin properties, you can also do the same as with a regular SharedPreferences or SharedPreferences.Editor object.
sweetPreferences.set("key", 1337)
sweetPreferences.remove("key")
sweetPreferences.contains("key")
sweetPreferences.get("key", 0)
sweetPreferences.clear() // Clear all preferencesYou can check the demo Android application to see it in action.
Read the accompanying blogpost on liip.ch.