Sobes.tech
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(); // Премахва всички данни