sujay_br
sujay_br

Reputation: 565

How to access flutter Shared preferences on the android end (using java)

I have the following function in dart to set a particular boolean preference value.

_switchPersistentNotifications() {
  setState(() {
    isPersistentNotificationEnabled = !isPersistentNotificationEnabled;
  });
  widget.preferences.setBool(
      "isPersistentNotificationEnabled", isPersistentNotificationEnabled);
}

This function sets the value of isPersistentNotificationEnabled preference.

Now on the native android end, I am supposed to use this shared preference value. Here's what I have done so far.

SharedPreferences preferences =
                    PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
                // check if the state change notification is to be shown
                if (preferences.getBoolean("flutter.isStateChangeNotificationEnabled", false)) {
                    showConnectionStateChangeNotification();
                }

And the if condition never gets evaluated to true. I also tried printing all the existing preference values using the code below.

Map<String, ?> allEntries = preferences.getAll();
            for (Map.Entry<String, ?> entry : allEntries.entrySet()) {
                Log.d("map values", entry.getKey() + ": " + entry.getValue().toString());
            }

And it only presents the values that the Android has created (using java).

Any help in accessing the preference values is greatly appreciated. Thank You.

Upvotes: 13

Views: 4973

Answers (1)

Kelvin
Kelvin

Reputation: 530

Sorry this answer is coming late, just got the answer from flutter github page.

What you can do to accomplish this is:

SharedPreferences prefs = getSharedPreferences("FlutterSharedPreferences", MODE_PRIVATE);

then if you want to read e.g. "myValue" key, you have to add "flutter." prefix:

String value = prefs.getString("flutter."+key, null);

Upvotes: 32

Related Questions