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

房东的猫 提交于 2020-03-19 06:46:27

问题


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.


回答1:


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);



回答2:


There is a wonderful package called shared_preferences developed by the Flutter team that handles this on iOS and Android without having to touch the native code base!

I can't tell if you're using it from your code, but if not I strongly recommend checking it out.



来源:https://stackoverflow.com/questions/55225207/how-to-access-flutter-shared-preferences-on-the-android-end-using-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!