Verwaltung von Benutzereinstellungen in Flutter mit PrefService

Flutter ist bekannt für seine Flexibilität und die Möglichkeit, beeindruckende Apps mit minimalem Aufwand zu erstellen. Doch sobald du Benutzereinstellungen verwalten musst, kommt oft die Frage auf: Wie speichert man diese am besten, damit sie einfach zugänglich und nachhaltig sind? Genau hier kommt PrefService ins Spiel! In diesem Beitrag zeige ich dir, wie du PrefService nutzt, warum es Sinn macht, und wie du mit YAML und build_runner für Ordnung sorgst.


Was ist PrefService und warum solltest du es verwenden?

Was macht PrefService so besonders?

PrefService ist ein einfaches, aber leistungsstarkes Tool für die Verwaltung von Benutzereinstellungen. Es basiert auf Shared Preferences, erlaubt aber:

  • Zentrale Verwaltung von Einstellungen: Du kannst Standardwerte für die gesamte App definieren.
  • Flexiblen Zugriff: Dank seiner Implementierung als InheritedWidget kannst du die Einstellungen in jedem Widget der App nutzen.
  • Persistenz: Änderungen werden automatisch gespeichert und bleiben nach dem Neustart der App erhalten.

Warum nicht einfach Shared Preferences?

Während Shared Preferences nützlich ist, wird es schnell unübersichtlich, wenn viele Einstellungen verwaltet werden müssen. PrefService baut eine Schicht darüber auf, sodass du dich auf die eigentliche Funktionalität konzentrieren kannst, anstatt dich mit Low-Level-APIs zu beschäftigen.


Wie sieht die ideale Ordnerstruktur aus?

Eine saubere Struktur ist das A und O für nachhaltigen Code. Hier ist ein Beispiel, wie du die Einstellungen in deinem Projekt organisieren kannst:

lib/
├── main.dart
├── settings/
│   ├── blabla_settings.yaml     # YAML-Datei mit Standardwerten
│   ├── blabla_settings.g.dart   # Automatisch generierter Dart-Code
│   ├── common_settings.yaml     # YAML für allgemeine Einstellungen
│   ├── common_settings.g.dart   # Generierter Dart-Code
│   └── settings_loader.dart     # Hilfsklasse zum Laden von Einstellungen

Warum diese Struktur?

  • Lesbarkeit: YAML-Dateien sind leicht verständlich, auch für Teammitglieder ohne Programmierhintergrund.
  • Erweiterbarkeit: Neue Module oder Features können einfach eigene Einstellungen hinzufügen.
  • Automatisierung: Mit build_runner wird der Dart-Code automatisch aus den YAML-Dateien generiert.

So startest du mit PrefService

Schritt 1: Einrichten der Abhängigkeiten

Füge pref und build_runner in deine pubspec.yaml hinzu:

dependencies:
  pref: ^2.1.3

dev_dependencies:
  build_runner: ^2.4.9
  pref_gen: ^1.0.0

Vergiss nicht, die Abhängigkeiten zu installieren:

flutter pub get

Schritt 2: Erstellen der YAML-Dateien

In lib/settings erstellst du eine Datei, z. B. blabla_settings.yaml. Darin definierst du die Standardwerte:

default_points: 100
max_players: 4
allow_draw: true

Schritt 3: Generiere den Dart-Code

Mit folgendem Befehl wird aus der YAML-Datei eine Dart-Klasse erstellt:

dart run build_runner build

Nach der Ausführung findest du eine Datei namens blabla_settings.g.dart mit folgendem Inhalt:

class BlablaSettings {
  static const defaults = {
    'default_points': 100,
    'max_players': 4,
    'allow_draw': true,
  };
}

Schritt 4: Verwenden der Einstellungen

In main.dart kannst du die Einstellungen mit PrefService einbinden:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  final service = await PrefServiceShared.init(
    defaults: BlaBlaSettings.defaults,
  );

  runApp(
    PrefService(
      service: service,
      child: const MyApp(),
    ),
  );
}

Best Practices für die Arbeit mit PrefService

Standardwerte zentral halten

Alle Einstellungen sollten in YAML-Dateien definiert werden, damit sie leicht wartbar sind. Änderungen an den Standardwerten sind dann ein Kinderspiel.

Code-Generierung regelmässig aktualisieren

Verwende den watch-Modus von build_runner, um den generierten Code automatisch zu aktualisieren:

dart run build_runner watch

Einstellungen modularisieren

Hast du mehrere Features oder Spiele? Erstelle für jedes eine eigene YAML-Datei. Das hält die Konfiguration übersichtlich.


Fazit

PrefService bietet eine leistungsstarke Möglichkeit, Benutzereinstellungen in Flutter-Apps zu verwalten. Mit einer sauberen Ordnerstruktur, YAML-Dateien und build_runner behältst du nicht nur die Übersicht, sondern profitierst auch von einer automatisierten und flexiblen Implementierung.


Comments

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert