Sobes.tech
Junior

V čem spočívá vlastnost použití SharedPreferences ve Flutteru?

sobes.tech AI

Odpověď od AI

SharedPreferences poskytuje jednoduché API pro ukládání malých objemů dat (primitivní typy: int, double, bool, String, List<String>) ve formě párů klíč-hodnota. Data jsou ukládána asynchronně. To je vhodné pro ukládání uživatelských nastavení, stavových vlajek a dalších nedůležitých informací.

Vlastnosti:

  • Jednoduché použití: API je lehké a intuitivní.
  • Asynchronní operace: Všechny operace čtení a zápisu jsou asynchronní, což zabraňuje blokování UI vlákna.
  • Omezená sada typů: Podporuje pouze primitivní typy a seznamy řetězců.
  • Nevhodné pro velké objemy nebo složitá data: Neefektivní pro ukládání velkých datových struktur nebo velkého množství záznamů.
  • Závislost na platformě: Implementace je založena na nativních mechanismech ukládání dat (například NSUserDefaults na iOS, SharedPreferences na Androidu).
  • Nezabezpečené ukládání citlivých informací: Data jsou uložena v otevřeném textu, nevhodná pro hesla nebo jiné citlivé informace.
  • Pro přístup je potřeba await: Získání instance SharedPreferences a provádění operací čtení/zápisu vyžadují použití await.

Příklad použití:

// Získání instance SharedPreferences
final prefs = await SharedPreferences.getInstance();

// Ukládání dat
await prefs.setInt('counter', 10);
await prefs.setBool('isDarkMode', true);
await prefs.setString('username', 'FlutterDev');
await prefs.setStringList('items', ['apple', 'banana']);

// Čtení dat
final counter = prefs.getInt('counter') ?? 0; // Použití ?? pro výchozí hodnotu
final isDarkMode = prefs.getBool('isDarkMode') ?? false;
final username = prefs.getString('username');
final items = prefs.getStringList('items') ?? [];

// Odstranění dat
await prefs.remove('username');
await prefs.clear(); // Odstraní všechna data