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.
NSUserDefaultsna iOS,SharedPreferencesna Androidzie). - Niebezpieczne przechowywanie dla poufnych informacji: Dane są przechowywane w formacie tekstowym, nie nadaje się do haseł lub innych wrażliwych danych.
- Wymaga
awaitdo dostępu: Uzyskanie instancjiSharedPreferencesi wykonywanie operacji odczytu/zapisu wymaga użyciaawait.
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