Sobes.tech
Junior

Wat zijn SharedPreferences en hoe gebruik je ze?

sobes.tech AI

Antwoord van AI

SharedPreferences is een eenvoudig mechanisme om kleine hoeveelheden gegevens op te slaan in sleutel-waardeparen. Ideaal voor het opslaan van gebruikersinstellingen of kleine vlaggen.

Gebruik:

  1. Dependentie toevoegen: In het bestand pubspec.yaml voegen we toe:

    dependencies:
      flutter:
        sdk: flutter
      shared_preferences: ^2.2.0 # Gebruik de actuele versie
    

    en voeren flutter pub get uit.

  2. Importeren:

    import 'package:shared_preferences/shared_preferences.dart';
    
  3. Instantie verkrijgen:

    // Asynchrone operatie
    SharedPreferences prefs = await SharedPreferences.getInstance();
    
  4. Gegevens opslaan:

    // String opslaan
    prefs.setString('username', 'Alice');
    // Getal (int) opslaan
    prefs.setInt('age', 30);
    // Getal (double) opslaan
    prefs.setDouble('salary', 50000.50);
    // Booleaanse waarde opslaan
    prefs.setBool('darkMode', true);
    // Lijst van strings opslaan
    prefs.setStringList('items', ['item1', 'item2']);
    

    Alle opslaan-methoden retourneren Future<bool>, wat op succes wijst.

  5. Gegevens lezen:

    // String lezen
    String? username = prefs.getString('username'); // Retourneert null als sleutel niet gevonden
    // Getal (int) lezen
    int? age = prefs.getInt('age');
    // Getal (double) lezen
    double? salary = prefs.getDouble('salary');
    // Booleaanse waarde lezen
    bool? darkMode = prefs.getBool('darkMode');
    // Lijst van strings lezen
    List<String>? items = prefs.getStringList('items');
    
  6. Gegevens verwijderen:

    // Verwijderen op sleutel
    prefs.remove('username'); // Retourneert `Future<bool>`
    // Alle gegevens verwijderen
    prefs.clear(); // Retourneert `Future<bool>`
    

Beperkingen:

  • Niet geschikt voor het opslaan van grote hoeveelheden gegevens of complexe structuren.
  • Gegevens worden in open vorm opgeslagen (ook op applicatieniveau), niet geschikt voor gevoelige informatie.
  • Werkt met basistypen. Voor objecten is serialisatie/deserialisatie vereist (bijvoorbeeld met json).