Reputation: 565
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
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