首页 > 解决方案 > 无法使用 SharedPreferences 进行简单保存 - 我错过了什么?

问题描述

我正在尝试使用 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');
  }

'''

标签: fluttersharedpreferences

解决方案


您是否在 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");
}

推荐阅读