This commit is contained in:
2025-11-01 15:52:12 +01:00
parent 3054027ebf
commit 1c6c19c4c9
6 changed files with 67 additions and 30 deletions

3
devtools_options.yaml Normal file
View File

@@ -0,0 +1,3 @@
description: This file stores settings for Dart & Flutter DevTools.
documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states
extensions:

View File

@@ -55,8 +55,17 @@ class _LayoutDetailPageState extends State<LayoutDetailPage> {
Future<void> _refreshLayout() async {
final updated = await apiService.getStoreLayoutById(_layout.id);
if (updated != null && mounted) {
if (!mounted) return;
if (updated != null) {
setState(() => _layout = updated);
return;
}
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('Dieses Layout ist nicht mehr verfügbar.')),
);
if (mounted) {
Navigator.of(context).pop();
}
}

View File

@@ -627,12 +627,11 @@ class _ListDetailPageState extends State<ListDetailPage> {
).showSnackBar(SnackBar(content: Text('"${item.name}" gelöscht.')));
}
} catch (e) {
if (!mounted) return;
setState(() => _items.insert(index, item));
if (mounted) {
ScaffoldMessenger.of(
context,
).showSnackBar(SnackBar(content: Text('Fehler beim Löschen: $e')));
}
ScaffoldMessenger.of(
context,
).showSnackBar(SnackBar(content: Text('Fehler beim Löschen: $e')));
}
}
@@ -642,12 +641,11 @@ class _ListDetailPageState extends State<ListDetailPage> {
try {
await apiService.updateItem(item.id, checked: item.checked);
} catch (e) {
if (!mounted) return;
setState(() => item.checked = oldState);
if (mounted) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Fehler beim Aktualisieren: $e')),
);
}
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Fehler beim Aktualisieren: $e')),
);
}
}

View File

@@ -30,7 +30,9 @@ class _LoginPageState extends State<LoginPage> {
await apiService.login(email, password);
}
} catch (e) {
setState(() => _error = e.toString());
if (mounted) {
setState(() => _error = e.toString());
}
} finally {
if (mounted) {
setState(() => _loading = false);
@@ -38,6 +40,13 @@ class _LoginPageState extends State<LoginPage> {
}
}
@override
void dispose() {
_emailCtl.dispose();
_pwCtl.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(

View File

@@ -80,16 +80,22 @@ class _MembersDialogState extends State<MembersDialog> {
final List<String> newMembers = [...widget.list.members, user.id];
await apiService.updateList(widget.list.id, members: newMembers);
setState(() {
widget.list.members = newMembers;
_userEmails[user.id] = user.data['email'] as String;
_emailCtl.clear();
_hasChanges = true;
});
if (mounted) {
setState(() {
widget.list.members = newMembers;
_userEmails[user.id] = user.data['email'] as String;
_emailCtl.clear();
_hasChanges = true;
});
}
} catch (e) {
setState(() => _error = e.toString());
if (mounted) {
setState(() => _error = e.toString());
}
} finally {
setState(() => _isLoading = false);
if (mounted) {
setState(() => _isLoading = false);
}
}
}
@@ -128,17 +134,29 @@ class _MembersDialogState extends State<MembersDialog> {
.toList();
await apiService.updateList(widget.list.id, members: newMembers);
setState(() {
widget.list.members = newMembers;
_hasChanges = true;
});
if (mounted) {
setState(() {
widget.list.members = newMembers;
_hasChanges = true;
});
}
} catch (e) {
setState(() => _error = e.toString());
if (mounted) {
setState(() => _error = e.toString());
}
} finally {
setState(() => _isLoading = false);
if (mounted) {
setState(() => _isLoading = false);
}
}
}
@override
void dispose() {
_emailCtl.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
final bool isOwner = widget.list.owner == apiService.userId;

View File

@@ -172,10 +172,10 @@ packages:
dependency: transitive
description:
name: meta
sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c
sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394"
url: "https://pub.dev"
source: hosted
version: "1.16.0"
version: "1.17.0"
nested:
dependency: transitive
description:
@@ -393,10 +393,10 @@ packages:
dependency: transitive
description:
name: test_api
sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00"
sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55
url: "https://pub.dev"
source: hosted
version: "0.7.6"
version: "0.7.7"
typed_data:
dependency: transitive
description: