Как сохранить данные в виде массива в getStringList (общие настройки) в Flutter

#flutter #flutter-dependencies #flutter-sharedpreference

#flutter #flutter-зависимости #flutter-sharedpreference

Вопрос:

Я пытаюсь сохранить массив documentId, когда пользователь нажимает на экран. Я попытался записать и загрузить данные, используя SharedPreference, но они хранятся как строка, а не как массив.

MyCode:

 _writedata() async{
      final prefs = await SharedPreferences.getInstance();
      final key = 'my_key';
      prefs.setStringList(key, [docId]);
    }

_loadData() async{
      final prefs = await SharedPreferences.getInstance();
      final key = 'my_key';
      final value = prefs.getStringList(key) ?? [];
      print('load data: $value');
    }
 

Мой вывод:

 I/flutter (17292): load data: [9koh2fe2T4FydH2xoqzo]
I/flutter (17292): load data: [aV58m2nZsHtCtGafidh2]
I/flutter (17292): load data: [60Q9uduXR5sqMww1i58D]
I/flutter (17292): load data: [EmrgSlHOGDUHqzDFo4vm]
I/flutter (17292): load data: [D5mJi5Tt6p8GKP9OyE8r]
 

Может кто-нибудь, пожалуйста, подсказать мне, как сохранить это в формате массива, избегая повторяющихся значений?

Спасибо за ваше время.

Ответ №1:

Я думаю, вы ошибаетесь в том, что setStringList делает. Все, что он делает, это сохраняет список, который вы ему предоставляете. Он не добавляется в существующий список и не проверяет содержимое списков.

Если вам нужна определенная логика, например, добавление в список или удаление дубликатов, вам нужно получить список, манипулировать списком по своему усмотрению, а затем установить этот список.