config_store/sqlite/gsd_config_store_sqlite library

SQLite-Speicher für SharedPreferencesAsync-Werte (Windows, macOS, Linux) und Secrets (Windows).

Eigene Library ohne Flutter, damit sie auch in reinen Dart-Prozessen läuft (Multi-Prozess-Test per dart run). Die Flutter-Seite (GSDSqliteSharedPreferencesPlatform und GSDSqliteSecureStoragePlatform in gsd_utilities.dart) registriert GSDSqlitePreferencesStorage und GSDSqliteSecretStorage als Plattform-Implementierungen von shared_preferences und flutter_secure_storage.

Warum SQLite statt der Desktop-Plugins: die Windows-Plugins (und das Linux-Plugin für shared_preferences) halten alle Werte in einer Datei und schreiben sie bei jedem Set komplett neu. Zwei Prozesse überschreiben sich damit gegenseitig, selbst wenn sie verschiedene Keys ändern. SQLite (WAL, busy_timeout) serialisiert die Schreibzugriffe prozessübergreifend, jeder Key ist eine eigene Zeile, und es gibt keinen Cache.

Classes

GSDDpapiSecretCipher
Windows DPAPI (CryptProtectData) im Benutzerkontext: nur derselbe Windows-Benutzer auf demselben Rechner kann entschlüsseln. Dasselbe Verfahren wie flutter_secure_storage_windows, aber pro Eintrag statt für eine Datei mit allen Einträgen.
GSDSecretCipher
Ver- und Entschlüsselt einzelne Secrets für GSDSqliteSecretStorage.
GSDSqlitePreferencesStorage
Key-Value-Tabelle in einer SQLite-Datei, typisiert wie SharedPreferencesAsync (String, bool, int, double, List<String>).
GSDSqliteSecretStorage
Secrets in einer SQLite-Datei, jeder Wert einzeln per GSDSecretCipher verschlüsselt (Default DPAPI).

Exceptions / Errors

GSDSecretUnreadableException
Ein Secret, das vorhanden ist, aber nicht entschlüsselt werden kann.