...
This commit is contained in:
3
devtools_options.yaml
Normal file
3
devtools_options.yaml
Normal 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:
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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')),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user