首页 > 解决方案 > 共享偏好值不会在触发时更改

问题描述

这是我的代码,如果满足条件,我将在其中执行方法。出于某种原因,“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 的值是 '' 在方法调用期间初始化。

标签: androidflutterdartflutter-layoutflutter-dependencies

解决方案


您在代码的开头将 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");
    });
  }

推荐阅读