Flutter Web的Shared_Preferences?

时间:2019-11-03 06:59:20

标签: flutter async-await

Shared_preferences(https://pub.dev/packages/shared_preferences)似乎不适用于Flutter for Web。

按下按钮时会调用以下功能。

 getEmail() async {
    print("reached 1st line");
    SharedPreferences prefs = await SharedPreferences.getInstance();
    print("reached 2nd line");
    String _confirmedEmail = prefs.getString('_confirmedEmail') ?? "";
)

它显示“到达第一行”,但不显示“到达第二行”,这意味着程序不会经过await语句。有趣的是,我也没有任何错误。似乎只是忽略了await语句之后的其余功能。

在Flutter for Web中存储共享首选项的最佳选择是什么?

4 个答案:

答案 0 :(得分:7)

好消息,默认是{0.5.6版shared_prefs,flutter默认支持网络

现在包括shared_preferences for web

您的代码应该可以正常工作,而无需更改,只需更新 pubspec.yaml

中的依赖性
dependencies:
 shared_preferences: ^0.5.6

答案 1 :(得分:3)

shared_preferences不适用于Flutter Web,这就是为什么实例值永远不会返回的原因。为此,您可以改用任何键值存储,例如sembast

答案 2 :(得分:0)

pub.dev中搜索库时,您可能会检查标签。

对于Web来说,最好的实现方式是为Web实现缓存,而dcache为使用flutter_web实现缓存。

import 'package:dcache/dcache.dart';

void main() {
  Cache c = new SimpleCache(storage: new SimpleStorage(size: 20));

    c.set("key", 42);
    print(c.get("key")); // 42
    print(c.containsKey("unknown_key")); // false
    print(c.get("unknown_key")); // nil
}

如您所见,它与Flutter的shared_preferences非常相似。

希望这会有所帮助。

答案 3 :(得分:0)

由于这个原因,我认为它现在受到支持。这取决于shared_preferences_web image from pub dev