【问题标题】:Can't get a simple save with SharedPreferences to work - what am I missing?无法使用 SharedPreferences 进行简单保存 - 我错过了什么?
【发布时间】:2020-08-24 13:50:06
【问题描述】:

我正在尝试使用 SharedPreferences 保存一个 int:https://flutter.dev/docs/cookbook/persistence/key-value

但是,当我运行下面的代码时,它只打印“Hello”而不是“Here”。 它似乎卡在“最终首选项 = await SharedPreferences.getInstance();” 到底是怎么回事?我错过了什么吗?

...
class _InventoryItemState extends State<InventoryItem> {


  Future <void> saveInt() async {

    print("hello");
    // obtain shared preferences
    final prefs = await SharedPreferences.getInstance();
    print("Here");


    // set value
    prefs.setInt('counter', 7);

    // load value
    final counter = prefs.getInt('counter') ?? 2;

    print(counter);

  }

  @override
  Widget build(BuildContext context) {

    saveInt();
...

更新:

使用以下代码让它工作:

'''

_saveInvNumber() async {
    final prefs = await SharedPreferences.getInstance();
    final key = 'invNumber';
    final value = widget.invNumber;
    prefs.setInt(key, value);
    print('saved $value');
  }

'''

【问题讨论】:

  • hello之后有没有报错?
  • 不,我没有,没有错误信息
  • 使用共享首选项时,设置数据是未来,您应该使用 await 关键字,而获取数据不是未来,因此您可以立即访问数据。

标签: flutter sharedpreferences


【解决方案1】:

您是否在 pubspec.yaml 中添加 SharedPreferences 依赖项。如果没有,请按照以下步骤操作:

dependencies:
  flutter:
    sdk: flutter
  shared_preferences: ^0.5.8

您的代码的问题是您制作了SharedPreferences final,我相信您无法从中更改值。下面是如何保存字符串值的示例:

addStringToSF() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  prefs.setString('stringValue', "abc");
}

【讨论】:

  • 我让它与其他一些代码一起工作,但我仍然不明白为什么它可以工作而不是另一个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-30
  • 1970-01-01
  • 1970-01-01
  • 2013-07-18
相关资源
最近更新 更多