android - 共享偏好值不会在触发时更改
问题描述
这是我的代码,如果满足条件,我将在其中执行方法。出于某种原因,“NEWPINCO”的值不会更改为我传递的“值”。我做错了什么吗?
dynamic NEWPINCO;
addAddressPersistent(dynamic value) async {
NEWPINCO = '';
print("VALUE PASSED FOR PINCODE : $value");
final SharedPreferences prefs = await SharedPreferences.getInstance();
setState(() {
prefs.setString('NEWPINCO', value);
print("$NEWPINCO is the number");
});
}
控制台中调试语句的输出:
I/flutter ( 6129): VALUE PASSED FOR PINCODE : 281232
I/flutter ( 6129): is the number
有人知道为什么 NEWPINCO 的价值没有改变吗?如您所见,NEWPINCO 的值是 '' 在方法调用期间初始化。
解决方案
您在代码的开头将 NEWPINCO 声明为空字符串,是的,您在 shared_preferences 中使用 NEWPINCO 键保存了一个字符串,但这与您的动态对象无关
dynamic NEWPINCO;
addAddressPersistent(dynamic value) async {
NEWPINCO = '';
print("VALUE PASSED FOR PINCODE : $value");
final SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setString('NEWPINCO', value); //setting it's a Future
setState(() {
NEWPINCO = prefs.getString('NEWPINCO');
print("$NEWPINCO is the number");
});
}