跳转至

dataStore

dataStore

dependencies

implementation "androidx.datastore:datastore-preferences:1.0.0"

setup repo

  1. create a new kotlin class called xxxPreferenceRepository, this class takes one parameter dataStore: DataStore<Preference>

  2. list every element you want to save

val themeMode: Flow<String>
...
  1. define saveXXX method
suspend fun saveThemePreference(themeMode: String){
        dataStore.edit { preferences ->
            preferences[THEME_MODE] = themeMode
        }
    }
  1. put key for dataStore in companion object
 private companion object {
        val THEME_MODE = stringPreferencesKey("theme_mode")
        const val TAG = "UserPreferencesRepo"
    }
  1. 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)
    }
}

setup viewModel

颜色主题调整

评论区~