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:
parent
5ed3a68e45
commit
5b8a99a26e
4 changed files with 28 additions and 3 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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" }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.';
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue