flutter - 无法使用 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');
}
'''
解决方案
您是否在 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");
}