'android datastore-preferences: Property delegate must have a 'getValue(Context, KProperty<*>)' method

I'm writing a jetpack compose android app, I need to store some settings permanently.

I decided to use androidx.datastore:datastore-preferences:1.0.0 library, I have added this to my classpath.

According to the https://developer.android.com/topic/libraries/architecture/datastore descripton I have added this line of code to my kotline file at the top level:

val Context.prefsDataStore: DataStore by preferencesDataStore(name = "settings")

But I get a compile error:

e: ...SettingsViewModel.kt: (13, 50): Property delegate must have a 'getValue(Context, KProperty<*>)' method. None of the following functions is suitable: 
public abstract operator fun getValue(thisRef: Context, property: KProperty<*>): DataStore<Preferences> defined in kotlin.properties.ReadOnlyProperty

How can I use the datastore-preferences?

My build.gradle file:

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-kapt'

}

apply plugin: 'dagger.hilt.android.plugin'
apply plugin: 'kotlinx-serialization'


android {
    compileSdk 31

    defaultConfig {
        applicationId "hu.homedashboard.mobile"
        minSdk 22
        targetSdk 31
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        vectorDrawables {
            useSupportLibrary true
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
        useIR = true
    }
    buildFeatures {
        compose true
    }
    composeOptions {
        kotlinCompilerExtensionVersion compose_version
        kotlinCompilerVersion "$kotlinVersion"
    }
    packagingOptions {
        resources {
            excludes += '/META-INF/{AL2.0,LGPL2.1}'
        }
    }
}

dependencies {

    implementation "androidx.activity:activity-compose:1.3.1"
    implementation "androidx.appcompat:appcompat:1.3.1"
    implementation "androidx.datastore:datastore-preferences:1.0.0"
    implementation "androidx.compose.material:material:$compose_version"
    implementation "androidx.compose.ui:ui-tooling-preview:$compose_version"
    implementation "androidx.compose.ui:ui:$compose_version"
    implementation "com.google.accompanist:accompanist-swiperefresh:0.20.3"
    implementation "androidx.core:core-ktx:1.6.0"
    implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
    implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version"
    implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.3.1"
    implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version"
    implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
    implementation "androidx.navigation:navigation-compose:2.4.0-alpha10"
    implementation "com.google.android.material:material:1.4.0"
    implementation "com.google.dagger:hilt-android:2.40.1"
    implementation "com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:0.8.0"
    implementation "com.squareup.retrofit2:retrofit:2.9.0"
    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
    implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.0"
    implementation "org.ocpsoft.prettytime:prettytime:5.0.2.Final"
    implementation 'androidx.hilt:hilt-navigation-compose:1.0.0-alpha03'

    kapt "com.google.dagger:hilt-compiler:2.38.1"
    kapt "com.google.dagger:dagger-android-processor:2.40.1"
    kapt "com.google.guava:guava:31.0.1-android"

    api "com.google.guava:guava:31.0.1-android"

    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
    androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version"
    debugImplementation "androidx.compose.ui:ui-tooling:$compose_version"
}

kapt {
    correctErrorTypes true
    javacOptions {
        option("-Xmaxerrs", 500)
    }
}


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source