From 82f687b5b1fee86f58cd4e5d59aebf2385305ad2 Mon Sep 17 00:00:00 2001 From: Fabian Freund Date: Wed, 10 Sep 2025 08:45:52 +0200 Subject: [PATCH] try to address context issues after inactivity --- .../presentation/widgets/sheets/view_tab.dart | 52 +++++++++++-------- 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/app/lib/features/geckoview/features/browser/presentation/widgets/sheets/view_tab.dart b/app/lib/features/geckoview/features/browser/presentation/widgets/sheets/view_tab.dart index 66cb3348..c8f25f29 100644 --- a/app/lib/features/geckoview/features/browser/presentation/widgets/sheets/view_tab.dart +++ b/app/lib/features/geckoview/features/browser/presentation/widgets/sheets/view_tab.dart @@ -86,6 +86,8 @@ class ViewTabSheetWidget extends HookConsumerWidget { final scrolledTo = useRef(0.0); useEffect(() { WidgetsBinding.instance.addPostFrameCallback((_) async { + if (!context.mounted) return; + final header = headerKey.currentContext?.findRenderObject(); final text = textFieldKey.currentContext?.findRenderObject(); @@ -96,14 +98,16 @@ class ViewTabSheetWidget extends HookConsumerWidget { final relative = totalHeight / MediaQuery.of(context).size.height; - if (draggableScrollableController.size < relative && - relative > scrolledTo.value) { - await draggableScrollableController.animateTo( - relative, - duration: const Duration(milliseconds: 150), - curve: Curves.easeInOut, - ); - scrolledTo.value = relative; + if (relative >= 0 && relative <= 1) { + if (draggableScrollableController.size < relative && + relative > scrolledTo.value) { + await draggableScrollableController.animateTo( + relative, + duration: const Duration(milliseconds: 150), + curve: Curves.easeInOut, + ); + scrolledTo.value = relative; + } } } } @@ -113,22 +117,28 @@ class ViewTabSheetWidget extends HookConsumerWidget { }); final bottomInsets = useRef(0.0); - useEffect(() { - WidgetsBinding.instance.addPostFrameCallback((_) { - final diff = - ((MediaQuery.of(context).viewInsets.bottom / 2) / - MediaQuery.of(context).size.height) - - bottomInsets.value; + useEffect( + () { + WidgetsBinding.instance.addPostFrameCallback((_) { + final diff = + ((MediaQuery.of(context).viewInsets.bottom / 2) / + MediaQuery.of(context).size.height) - + bottomInsets.value; - draggableScrollableController.jumpTo( - draggableScrollableController.size + diff, - ); + draggableScrollableController.jumpTo( + draggableScrollableController.size + diff, + ); - bottomInsets.value += diff; - }); + bottomInsets.value += diff; + }); - return null; - }, [MediaQuery.of(context).viewInsets.bottom]); + return null; + }, + [ + MediaQuery.of(context).viewInsets.bottom, + MediaQuery.of(context).size.height, + ], + ); return NestedScrollView( physics: const NeverScrollableScrollPhysics(),