From 96135f0bf5392cbf4e24410c5b0936c561bb6f14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maty=C3=A1=C5=A1=20Caras?= Date: Sat, 10 Feb 2024 16:16:34 +0100 Subject: [PATCH] fix: overlay not working --- lib/views/home.dart | 47 +++++++++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/lib/views/home.dart b/lib/views/home.dart index b92e3fe..3c041b4 100644 --- a/lib/views/home.dart +++ b/lib/views/home.dart @@ -48,6 +48,7 @@ class _HomeViewState extends State { var _filter = ""; // search filter final searchFocus = FocusNode(); var sort = SortType.newest; + OverlayEntry? overlayEntry; @override void didChangeDependencies() { @@ -85,6 +86,7 @@ class _HomeViewState extends State { if (b) return; _searchActive = false; _filter = ""; + overlayEntry?.remove(); setState(() {}); }, child: Scaffold( @@ -253,6 +255,32 @@ class _HomeViewState extends State { _searchActive = !_searchActive; if (!_searchActive) { _filter = ""; + } else { + overlayEntry = OverlayEntry( + builder: (context) => Align( + alignment: Alignment.bottomCenter, + child: SizedBox( + width: MediaQuery.of(context).size.width, + height: + MediaQuery.of(context).size.height - 100, + child: GestureDetector( + onTap: () { + if (!searchFocus.hasFocus) { + _searchActive = false; + _filter = ""; + overlayEntry?.remove(); + setState(() {}); + return; + } + searchFocus.unfocus(); + }, + ), + ), + ), + ); + Overlay.of(context).insert( + overlayEntry!, + ); } setState(() {}); } @@ -574,25 +602,6 @@ class _HomeViewState extends State { ], ), ), - if (_searchActive) - OverlayEntry( - builder: (context) => SizedBox( - width: MediaQuery.of(context).size.width, - height: MediaQuery.of(context).size.height, - child: GestureDetector( - onTap: () { - if (!_searchActive) return; - if (!searchFocus.hasFocus) { - _searchActive = false; - _filter = ""; - setState(() {}); - return; - } - searchFocus.unfocus(); - }, - ), - ), - ), ], ), ),