#flutter #dart #sharedpreferences
#flutter #dart #sharedpreferences
Вопрос:
У меня есть свой список, который я получаю из json. Итак, я хочу передать этот список через общие настройки. Но, когда я пытаюсь использовать setStringList общих предпочтений, я сталкиваюсь с исключением.
type 'List<ApprovalStatus>' is not a subtype of type 'List<String>'
И ApprovalStatus — это класс, который определяется как:
class ApprovalStatus {
final items;
final index;
final approvalStatus;
ApprovalStatus({this.items, this.index, this.approvalStatus});
@override
String toString() {
return "${this.approvalStatus}";
}
}
Разве мы не можем использовать пользовательский список типов для общих предпочтений / Если нет, то как мы можем сохранить пользовательский список типов, используя общие предпочтения?
Ответ №1:
Ошибка предполагает, что вы пытаетесь передать список ApprovalStatus напрямую для сохранения в общих настройках. Он ожидает список строк.
Попробуйте это:
prefs.setStringList(approvalList.map((m) => m.toString()).toList());
Не забудьте добавить некоторую логику сериализации в toString, чтобы вы могли получить данные обратно.
Кроме того, вы можете напрямую сохранить массив JSON как строковое свойство в общих префиксах.
Ответ №2:
Нет, вы не можете напрямую сохранять пользовательские типы в общих настройках.
Вы можете сериализовать их в строковый формат и сохранить его.
Вы уже знаете, как это сделать, наиболее распространенный формат называется json.