如何在 Android 端(使用 Java)访问 Flutter 的共享首选项

13

我在dart中有以下函数来设置特定布尔偏好值。

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

这个函数设置了isPersistentNotificationEnabled偏好值。

现在在本机安卓端,我应该使用这个共享偏好值。目前我已经做了以下工作。

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

而且if条件从未被评估为真。我还尝试使用以下代码打印所有现有的首选项值。

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

它仅呈现Android创建的值(使用Java)。

非常感谢任何帮助访问偏好设置值。 谢谢。

1个回答

32
抱歉回复晚了,刚从Flutter的GitHub页面获取到答案。
您可以采取以下措施来实现这一目标:
SharedPreferences prefs = getSharedPreferences("FlutterSharedPreferences", MODE_PRIVATE);

然后,如果您想读取例如“myValue”键,您必须添加“flutter。”前缀:

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

1
伟大的人,出色的回答。 - Ráfagan
请问您能否提供Flutter的Github页面链接? - Apoorva Nataraja
在这里 https://github.com/flutter/flutter/issues/65759 - Klemen Tusar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接