#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
делает. Все, что он делает, это сохраняет список, который вы ему предоставляете. Он не добавляется в существующий список и не проверяет содержимое списков.
Если вам нужна определенная логика, например, добавление в список или удаление дубликатов, вам нужно получить список, манипулировать списком по своему усмотрению, а затем установить этот список.