Junior
Какво е особеността на използването на SharedPreferences във Flutter?
sobes.tech AI
Отговор от AI
SharedPreferences предоставя прост API за съхраняване на малки обеми данни (примитивни типове: int, double, bool, String, List<String>) под формата на двойки ключ-стойност. Данните се съхраняват асинхронно. Това е подходящо за съхраняване на потребителски настройки, флагове за състояние и друга не критична информация.
Характеристики:
- Лесна употреба: 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(); // Премахва всички данни