Nevermind, I have found how to do DataStore/SharedPref thing in KMP.
Currently, I'm using Multiplatform Settings
Here's the example:
Shared:
expect class MultiplatformLocalUserWrapper {
expect fun createLocalUserPref(): ObservableSettings
}
Android:
object ContextUtils {
private var kmpAppContext: Context? = null
val context
get() = kmpAppContext
?: error("Android context has not been set. Please call setContext in your Application's onCreate.")
fun setContext(context: Context) {
kmpAppContext = context
}
}
actual class MultiplatformLocalUserWrapper {
val context = ContextUtils.context
actual fun createLocalUserPref(): ObservableSettings {
val sharedPref =
context.getSharedPreferences("user_local", Context.MODE_PRIVATE)
return SharedPreferencesSettings(sharedPref)
}
}
Desktop (Use JVM):
actual class MultiplatformLocalUserWrapper {
actual fun createLocalUserPref(): ObservableSettings {
val preferences = Preferences.userRoot()
return PreferencesSettings(preferences)
}
}
If you wanna go for specific platform for ObservableSettings see this link