From ae70411939399c8baa043b137bca87a463fb229c Mon Sep 17 00:00:00 2001 From: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com> Date: Sat, 23 May 2026 23:59:19 +0530 Subject: [PATCH] fix: verify form disposal before notifyListeners --- .../packages/ui/lib/src/components/form.dart | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/mobile/packages/ui/lib/src/components/form.dart b/mobile/packages/ui/lib/src/components/form.dart index 4d0344ae6b..31e9d01980 100644 --- a/mobile/packages/ui/lib/src/components/form.dart +++ b/mobile/packages/ui/lib/src/components/form.dart @@ -10,9 +10,16 @@ class ImmichFormController extends ChangeNotifier { FutureOr Function()? onSubmit; final formKey = GlobalKey(); + bool _isDisposed = false; bool _isLoading = false; bool get isLoading => _isLoading; + @override + void dispose() { + _isDisposed = true; + super.dispose(); + } + Future submit() async { if (_isLoading) { return; @@ -27,7 +34,9 @@ class ImmichFormController extends ChangeNotifier { await onSubmit?.call(); } finally { _isLoading = false; - notifyListeners(); + if (!_isDisposed) { + notifyListeners(); + } } } } @@ -38,13 +47,7 @@ class ImmichForm extends StatefulWidget { final String? submitText; final IconData? submitIcon; - const ImmichForm({ - super.key, - this.onSubmit, - this.submitText, - this.submitIcon, - required this.builder, - }); + const ImmichForm({super.key, this.onSubmit, this.submitText, this.submitIcon, required this.builder}); @override State createState() => _ImmichFormState();