Ответ
SharedPreferences — это плагин для Flutter, предоставляющий простой механизм хранения данных в формате ключ-значение для сохранения примитивных типов (int, double, bool, String, ListNSUserDefaults на iOS и SharedPreferences на Android.
Основные характеристики:
- Простота: API для чтения/записи похож на
Map<String, dynamic>. - Сохранение состояния: Данные сохраняются на диске после закрытия приложения.
- Асинхронность: Все операции являются асинхронными (
Future). - Ограничения: Не подходит для хранения больших объемов данных или сложных структур (используйте для этого базы данных, например,
sqfliteилиhive).
Типичный сценарий использования — сохранение настроек пользователя:
import 'package:shared_preferences/shared_preferences.dart';
class SettingsService {
static const _darkModeKey = 'dark_mode';
Future<bool> isDarkModeEnabled() async {
final prefs = await SharedPreferences.getInstance();
// Возвращаем значение или false по умолчанию
return prefs.getBool(_darkModeKey) ?? false;
}
Future<void> setDarkMode(bool enabled) async {
final prefs = await SharedPreferences.getInstance();
await prefs.setBool(_darkModeKey, enabled);
}
}
Важные замечания:
- Не используйте SharedPreferences для чувствительных данных (пароли, токены). Для этого существуют плагины безопасного хранения, например,
flutter_secure_storage. - Частые операции записи могут влиять на производительность.
- Для реактивной привязки данных к UI можно обернуть вызовы SharedPreferences в
Streamили использовать пакеты вродеshared_preferences_wrapper.