首页 > 解决方案 > 无法将新值附加到列表使用共享偏好。新值将是 String 类型

问题描述

问题:

无法将新值附加到List<String>使用共享首选项。新值将是 type String

这是我的定义和方法:

List<dynamic> deliveryAddressConfirmed = new List(5);
SharedPreferences prefs;
:
: //does something here...& on a specific condition call for gotNewNiceAddress(xxxx);
:
gotNewNiceAddress(dynamic capturedNewAddress) async {
    print(capturedNewAddress);    
    final SharedPreferences prefs = await SharedPreferences.getInstance();
    await prefs.setString("deliveryAddressConfirmed", capturedNewAddress);
      var x = deliveryAddressConfirmed.length;
      print("New length = $x");
    setState(() {
      deliveryAddressConfirmed =
          prefs.getStringList('deliveryAddressConfirmed');
    });

  }

控制台输出:

D/ViewRootImpl(17086): ViewPostImeInputStage ACTION_DOWN
I/flutter (17086): Mountain valley, north 16th street, JC -20293
I/flutter (17086): 
I/flutter (17086):
I/flutter (17086): New length = 0

不确定我在上面的代码中是否做错了什么。有人可以帮忙吗?

标签: androidflutterdartflutter-dependenciesdart-pub

解决方案


我不知道您要实现什么目标,但要在列表中添加一些内容,然后您可以执行以下操作

deliveryAddressConfirmed.add(prefs.getStringList('deliveryAddressConfirmed'));

此外,您在添加内容之前打印列表,因此它总是会打印 0。尝试在 setState 之后调用 print 语句。


推荐阅读