Diagnose: Speicher-Fehler zeigt jetzt den Firebase-Fehlercode an

Der generische catch verschluckte die Ursache (Storage-Upload vs.
Firestore-Write vs. anderes) — die Snackbar nennt jetzt plugin/code,
zusätzlich debugPrint des vollen Fehlers.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
cschlaefke 2026-07-23 21:40:29 +02:00
parent 5ed3a68e45
commit 5b8a99a26e
4 changed files with 28 additions and 3 deletions

View file

@ -1,5 +1,6 @@
import 'dart:typed_data';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';
@ -151,11 +152,18 @@ class _PlantFormScreenState extends ConsumerState<PlantFormScreen> {
));
}
if (mounted) context.pop();
} catch (_) {
} catch (error) {
// Der konkrete Grund (z. B. firebase_storage/unauthorized vs.
// cloud_firestore/permission-denied) entscheidet, wo der Fehler liegt
// deshalb wird er mit angezeigt statt verschluckt.
debugPrint('Pflanze speichern fehlgeschlagen: $error');
final detail = error is FirebaseException
? '${error.plugin}/${error.code}'
: error.runtimeType.toString();
if (mounted) {
ScaffoldMessenger.of(context)
..hideCurrentSnackBar()
..showSnackBar(SnackBar(content: Text(l10n.saveError)));
..showSnackBar(SnackBar(content: Text(l10n.saveErrorDetail(detail))));
}
} finally {
if (mounted) setState(() => _saving = false);

View file

@ -225,5 +225,11 @@
}
},
"recognitionFailed": "Die Erkennung hat nicht geklappt du kannst die Angaben auch von Hand eintragen.",
"saveError": "Speichern fehlgeschlagen. Bitte versuche es erneut."
"saveError": "Speichern fehlgeschlagen. Bitte versuche es erneut.",
"saveErrorDetail": "Speichern fehlgeschlagen ({detail}). Bitte versuche es erneut.",
"@saveErrorDetail": {
"placeholders": {
"detail": { "type": "String" }
}
}
}

View file

@ -819,6 +819,12 @@ abstract class AppLocalizations {
/// In de, this message translates to:
/// **'Speichern fehlgeschlagen. Bitte versuche es erneut.'**
String get saveError;
/// No description provided for @saveErrorDetail.
///
/// In de, this message translates to:
/// **'Speichern fehlgeschlagen ({detail}). Bitte versuche es erneut.'**
String saveErrorDetail(String detail);
}
class _AppLocalizationsDelegate

View file

@ -444,4 +444,9 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get saveError => 'Speichern fehlgeschlagen. Bitte versuche es erneut.';
@override
String saveErrorDetail(String detail) {
return 'Speichern fehlgeschlagen ($detail). Bitte versuche es erneut.';
}
}