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 wieflutter_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.