Mobilutveckling med Flutter · Lektion

Shared Preferences för data

Använd `shared_preferences` för att lokalt lagra små mängder data, till exempel användarinställningar och preferenser, som nyckel-värde-par.

Lektion 1 av 412 steg

Shared Preferences för data är en gratis lektion i Mobilutveckling med Flutter på CoddyKit. Detta är lektion 1 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Mobilutveckling med Flutter, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Mobilutveckling med Flutter innehåller totalt 4 lektioner.

Vad är Shared Preferences?

När du bygger mobilappar behöver du ofta lagra små mängder data lokalt på enheten. Det kan vara allt från användarens inställning för mörkt läge till statusen för deras senaste inloggning.

shared_preferences är ett Flutter-paket som hjälper dig med just detta! Det ger ett enkelt sätt att lagra nyckel-värde-par med primitiva datatyper.

Varför använda Shared Preferences?

  • Enkla data: Idealiskt för lagring av enkla datatyper som booleska värden, heltal, decimaltal, strängar och listor med strängar.
  • Användarinställningar: Perfekt för att spara användarinställningar, appinställningar eller temaval.
  • Lättviktigt: Ett snabbt och enkelt sätt att spara små mängder data utan att behöva en fullständig databas.

Se det som ett litet digitalt anteckningsblock för appens tillfälliga minne!

Installera paketet

För att använda shared_preferences måste du först lägga till det bland projektets beroenden.

Öppna filen pubspec.yaml och lägg till följande rad under dependencies:

dependencies:
  flutter:
    sdk: flutter
  shared_preferences: ^2.2.2 # Add this line

Spara din första inställning

När paketet har lagts till kan du börja spara data. Du behöver hämta en instans av SharedPreferences och sedan använda metoder som setBool(), setString() och så vidare.

Kom ihåg att använda await eftersom dessa operationer är asynkrona!

import 'package:shared_preferences/shared_preferences.dart';

Future<void> saveSetting() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  await prefs.setBool('isDarkMode', true);
  print('Dark mode setting saved!');
}

Kör: Spara ett booleskt värde

Prova att köra det här exemplet för att se hur ett booleskt värde sparas. Vi sätter flaggan 'welcomeShown' till true.

import 'package:flutter/widgets.dart';
import 'package:shared_preferences/shared_preferences.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized(); 
  SharedPreferences prefs = await SharedPreferences.getInstance();

  // Save a boolean value
  await prefs.setBool('welcomeShown', true);
  print('welcomeShown saved: ${prefs.getBool('welcomeShown')}');
}

Hämta sparade data

För att hämta data använder du motsvarande get-metoder, till exempel getBool() och getString(). Dessa metoder returnerar en nullbar typ (till exempel bool?) eftersom nyckeln kanske inte finns.

Det är god praxis att ange ett standardvärde med operatorn ?? om nyckeln inte hittas.

import 'package:shared_preferences/shared_preferences.dart';

Future<bool> getSetting() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  // Get 'isDarkMode', default to false if not found
  bool isDark = prefs.getBool('isDarkMode') ?? false;
  return isDark;
}

Kör: Läs in ett booleskt värde

Vi läser in inställningen welcomeShown som vi sparade tidigare. Lägg märke till hur vi hanterar fallet där den kanske inte finns genom att ange standardvärdet false.

import 'package:flutter/widgets.dart';
import 'package:shared_preferences/shared_preferences.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  SharedPreferences prefs = await SharedPreferences.getInstance();

  // Load 'welcomeShown', default to false if not present
  bool welcomeShown = prefs.getBool('welcomeShown') ?? false;
  print('Is welcome screen already shown? $welcomeShown');

  // Let's try to load a key that doesn't exist
  String? userName = prefs.getString('userName');
  print('User Name: ${userName ?? 'Guest'}');
}

Spara andra datatyper

shared_preferences stöder flera grundläggande datatyper:

  • setString(key, value) för text
  • setInt(key, value) för heltal
  • setDouble(key, value) för decimaltal
  • setStringList(key, value) för listor med strängar

Det finns motsvarande get-metoder för varje typ.

Kör: Spara blandade data

Det här exemplet visar hur man sparar och läser in en sträng, ett heltal och en lista med strängar. Se hur olika typer hanteras.

import 'package:flutter/widgets.dart';
import 'package:shared_preferences/shared_preferences.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  SharedPreferences prefs = await SharedPreferences.getInstance();

  // Save different data types
  await prefs.setString('userName', 'Coddy');
  await prefs.setInt('score', 12345);
  await prefs.setStringList('favoriteFoods', ['Pizza', 'Sushi', 'Tacos']);
  print('All data saved!');

  // Load and print them
  String? name = prefs.getString('userName');
  int? score = prefs.getInt('score');
  List<String>? foods = prefs.getStringList('favoriteFoods');

  print('User Name: ${name ?? 'N/A'}');
  print('Score: ${score ?? 0}');
  print('Favorite Foods: ${foods ?? []}');
}

Ta bort inställningar

Du kan också ta bort sparade inställningar:

  • remove(key): Tar bort ett specifikt nyckel-värde-par.
  • clear(): Tar bort ALLA data som din app har lagrat med hjälp av shared_preferences. Använd med försiktighet!

Båda metoderna är asynkrona och returnerar en Future<bool> som anger om åtgärden lyckades.

Snabb kontroll

Du vill lagra användarens föredragna språk, vilket är en enda sträng som 'en_US' eller 'es_ES'. Vilken metod i shared_preferences är lämpligast för att spara dessa data?

Sammanfattning och nästa steg

Bra jobbat! Du har lärt dig hur du använder shared_preferences för att lagra och hämta små, enkla data lokalt i dina Flutter-appar.

  • Det passar utmärkt för användarinställningar och preferenser.
  • Stöder grundläggande typer: bool, int, double, string och List<String>.
  • Åtgärderna är asynkrona (använd await).
  • Kom ihåg att hantera null-värden när du hämtar data.

Härnäst ska du utforska mer strukturerad datalagring med SQLite-databaser!

Gratis att börja

Lär dig Dart med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
22
Lektioner
88

Vanliga frågor

Är lektionen ”Shared Preferences för data” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Mobilutveckling med Flutter, inklusive ”Shared Preferences för data”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Mobilutveckling med Flutter innehåller totalt 4 lektioner.

Vad lär jag mig i ”Shared Preferences för data”?

Använd `shared_preferences` för att lokalt lagra små mängder data, till exempel användarinställningar och preferenser, som nyckel-värde-par. Ni övar på Mobilutveckling med Flutter med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Mobilutveckling med Flutter?

Du behöver inga förkunskaper. Utbildningen i Mobilutveckling med Flutter på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.

Hur lång tid tar lektionen ”Shared Preferences för data”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Mobilutveckling med Flutter-lektionen?

Ja. Varje Mobilutveckling med Flutter-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Shared Preferences för data
  2. Integration av SQLite-databaser
  3. Åtgärder i filsystemet
  4. Hive och lokal NoSQL-lagring
← Tillbaka till Mobilutveckling med Flutter