我试图在共享首选项中设置字符串列表,但由于未知的原因,它抛出了以下错误
类型'bool'不是类型'List'的子类型
这是我的代码
List selectedItems = [];
setList() async {
var prefs = await SharedPreferences.getInstance();
List<String> itemList = selectedItems.map((e) => e.toString()).toList(); // converted int list to string
List<String> selectedItemsList = await prefs.setStringList('selectedItems', itemList) as List<String>; // error
}
我没有分配bool类型的值给任何变量,那么为什么会发生这个错误?
等待prefs。setString返回一个bool值,这就是你遇到错误的原因。参考参见https://pub.dev/documentation/shared_preferences/latest/shared_preferences/SharedPreferences/setString.html
你可能想要做的是像这样使用getStringList:
List<String> selectedItemsList = await prefs.getStringList('selectedItems') as List<String>;
或者如果你真的想保存列表,那这行就是:
await prefs.setStringList('selectedItems', itemList) as List<String>;
如果你看一下文档,你会看到setStringList
返回Future<bool>
。