Назад к вопросам
Junior
127
questionbank
В чем заключается особенность использования SharedPreferences в Flutter?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
SharedPreferences предоставляет простой API для хранения небольших объемов данных (примитивных типов: int, double, bool, String, List<String>) в виде key-value пар. Данные сохраняются асинхронно. Это подходит для хранения пользовательских настроек, флагов состояния и другой некритической информации.
Особенности:
- Простота использования: API легковесный и интуитивно понятный.
- Асинхронные операции: Все операции чтения и записи асинхронны, что предотвращает блокировку UI потока.
- Ограниченный набор типов: Поддерживает только примитивные типы и список строк.
- Не подходит для больших объемов или сложных данных: Неэффективен для хранения больших структур данных или большого количества записей.
- Зависимость от платформы: Реализация основана на нативных механизмах хранения данных (например,
NSUserDefaultsна iOS,SharedPreferencesна Android). - Небезопасное хранение для конфиденциальной информации: Данные хранятся в открытом виде, не подходят для паролей или другой чувствительной информации.
- Для доступа требуется
await: Получение экземпляраSharedPreferencesи выполнение операций чтения/записи требуют использованияawait.
Пример использования:
// Получение экземпляра SharedPreferences
final prefs = await SharedPreferences.getInstance();
// Запись данных
await prefs.setInt('counter', 10);
await prefs.setBool('isDarkMode', true);
await prefs.setString('username', 'FlutterDev');
await prefs.setStringList('items', ['apple', 'banana']);
// Чтение данных
final counter = prefs.getInt('counter') ?? 0; // Использование ?? для значения по умолчанию
final isDarkMode = prefs.getBool('isDarkMode') ?? false;
final username = prefs.getString('username');
final items = prefs.getStringList('items') ?? [];
// Удаление данных
await prefs.remove('username');
await prefs.clear(); // Удаляет все данные