类型 'bool' 不是类型转换中类型 'List<String>' 的子类型 - flutter/dart

type 'bool' is not a subtype of type 'List<String>' in type cast - flutter/dart

我正在尝试在共享首选项中设置一个字符串列表,但由于未知原因,它抛出了以下错误

type 'bool' 不是类型 cast

中类型 '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 类型值分配给任何变量,那么为什么会出现此错误?

await prefs.setString returns a 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>;

如果你看一下 docs,你会看到 setStringList returns Future<bool>.