【发布时间】: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 关键字,而获取数据不是未来,因此您可以立即访问数据。