Эта аннотация не применима к целевому свойству члена без вспомогательного поля или делегата - PullRequest
0 голосов
/ 20 мая 2019

Вот мой код:

@Module
class SharedPrefs {
    @Module
    companion object {
        val KEY_COOKIE = "cookie"

        @JvmStatic
        @Provides
        fun putPref(key: String, value: String?) {
            val prefs = PreferenceManager.getDefaultSharedPreferences(App.context)
            val editor = prefs.edit()
            editor.putString(key, value)
            editor.commit()
        }

        @JvmStatic
        @Provides
        fun getPref(key: String): String? {
            val preferences = PreferenceManager.getDefaultSharedPreferences(App.context)
            return preferences.getString(key, null)
        }

        @JvmStatic
        @Provides
        var cookie : String?
            get() = getPref(KEY_COOKIE)
            set(value) {
                putPref(KEY_COOKIE, value)
            }

    }
}

Последнее @provides выше var cookie генерирует ошибку компиляции:

Эта аннотация неприменима к целевому свойству участника без вспомогательное поле или делегат

Как мне исправить это?

1 Ответ

1 голос
/ 20 мая 2019

Попробуйте использовать @get:Provides вместо @Provides на var cookie.

РЕДАКТИРОВАТЬ:

Кстати, я думаю, я знаю, что вы подразумеваете под Providing этим var и я не верю, что Даггер позволит тебе это сделать.Он просто прочитает значение из получателя и сможет предоставить Nullable String на графике.

Вам нужно обернуть эти две функции (setter и getter из var cookie) в каком-либо объекте-обертке, и предоставьте эту обертку в Кинжале вместо String?.

...