Sobes.tech
Junior

Na czym polega cecha korzystania z SharedPreferences w Flutter?

sobes.tech AI

Odpowiedź od AI

SharedPreferences zapewnia prosty interfejs API do przechowywania niewielkich ilości danych (typy prymitywne: int, double, bool, String, List<String>) w formie par klucz-wartość. Dane są przechowywane asynchronicznie. Jest to odpowiednie do przechowywania ustawień użytkownika, flag stanu i innych niekrytycznych informacji.

Cechy:

  • Łatwość użycia: API jest lekkie i intuicyjne.
  • Operacje asynchroniczne: Wszystkie operacje odczytu i zapisu są asynchroniczne, co zapobiega blokowaniu głównego wątku UI.
  • Ograniczony zestaw typów: Obsługuje tylko typy prymitywne i listy stringów.
  • Nie nadaje się do dużych ilości danych lub danych złożonych: Nieefektywny do przechowywania dużych struktur danych lub wielu wpisów.
  • Zależność od platformy: Implementacja opiera się na natywnych mechanizmach przechowywania danych (np. NSUserDefaults na iOS, SharedPreferences na Androidzie).
  • Niebezpieczne przechowywanie dla poufnych informacji: Dane są przechowywane w formacie tekstowym, nie nadaje się do haseł lub innych wrażliwych danych.
  • Wymaga await do dostępu: Uzyskanie instancji SharedPreferences i wykonywanie operacji odczytu/zapisu wymaga użycia await.

Przykład użycia:

// Uzyskanie instancji SharedPreferences
final prefs = await SharedPreferences.getInstance();

// Zapisywanie danych
await prefs.setInt('counter', 10);
await prefs.setBool('isDarkMode', true);
await prefs.setString('username', 'FlutterDev');
await prefs.setStringList('items', ['apple', 'banana']);

// Odczyt danych
final counter = prefs.getInt('counter') ?? 0; // Użycie ?? dla wartości domyślnej
final isDarkMode = prefs.getBool('isDarkMode') ?? false;
final username = prefs.getString('username');
final items = prefs.getStringList('items') ?? [];

// Usuwanie danych
await prefs.remove('username');
await prefs.clear(); // Usuwa wszystkie dane