Сохранение локальных данных для списка на Flutter

У меня есть приложение, которое воспроизводит звук. Есть список звуков, и я показываю его в списке. Таким образом, пользователь может щелкнуть список и воспроизвести звук. И я добавил раздел «Избранное». И это работает нормально. Но когда пользователь закрывает приложение, оно исчезает. Я пытался использовать SharedPrefences, но мне это не удалось. Потому что мне нужно сохранить весь список, и я не знаю, как это сделать.

Когда я закрываю приложение, весь мой список «избранного» исчезает.

Я просто поделюсь всеми кодами для лучшего понимания:

Главный дротик
Любимый дартс

Вот объяснение с картинками:

Main page with 2 favourite sound

Favourite Page

After the restart

Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
0
0
19
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Поскольку список сохраненных песен представляет собой список строк, вы можете использовать метод setStringList() из SharedPrefences. Если вы хотите сохранить список, используйте:

final prefs = await SharedPreferences.getInstance();
await prefs.setStringList('savedSounds', savedSounds);

Затем, когда приложение запускается, вы загружаете песни, используя:

final prefs = await SharedPreferences.getInstance();
savedSounds = prefs.getStringList('savedSounds') ?? [];

Затем вы можете использовать цикл for, чтобы также получить сохраненные индексы, хотя я бы рекомендовал вам попробовать использовать только один список сохраненных песен.

for(int i = 0; i < savedSounds.length; i++){
      if(soundList[i] == savedSounds[i]){
        savedIndex.add(i.toString());
      }
    }

Вы можете использовать пакет SQFlite для локального хранения элементов списка. Вот пакет: https://pub.dev/packages/sqflite

Другие вопросы по теме