Сохранить список определенного типа в общих настройках

#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.