如何在android端访问flutter Shared首选项(使用java)

Posted

技术标签:

【中文标题】如何在android端访问flutter Shared首选项(使用java)【英文标题】:How to access flutter Shared preferences on the android end (using java) 【发布时间】:2019-08-09 01:09:24 【问题描述】:

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

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

此函数设置isPersistentNotificationEnabled 首选项的值。

现在在原生 android 端,我应该使用这个共享偏好值。这是我到目前为止所做的。

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

并且 if 条件永远不会被评估为 true。我还尝试使用下面的代码打印所有现有的首选项值。

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

而且它只呈现 Android 创建的值(使用 java)。

非常感谢您在访问首选项值方面的任何帮助。 谢谢。

【问题讨论】:

【参考方案1】:

抱歉这个答案来晚了,刚刚从flutter github页面得到答案。

你可以做的是:

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

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

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

【讨论】:

好人,好答案

以上是关于如何在android端访问flutter Shared首选项(使用java)的主要内容,如果未能解决你的问题,请参考以下文章

Android Flutter:手把手教你如何进行Android 与 Flutter的相互通信

跨端开发,flutter和react native如何选择

FlutterFlutter 混合开发 ( Flutter 与 Native 通信 | Android 端实现 EventChannel 通信 )

FlutterFlutter 混合开发 ( Flutter 与 Native 通信 | Android 端实现 MethodChannel 通信 )

FlutterFlutter 混合开发 ( Flutter 与 Native 通信 | Android 端实现 BasicMessageChannel 通信 )

你好,Flutter