fix: overlay not working

This commit is contained in:
Matyáš Caras 2024-02-10 16:16:34 +01:00
parent 6a25c8289c
commit 96135f0bf5
Signed by untrusted user who does not match committer: hernik
GPG key ID: 2A3175F98820C5C6

View file

@ -48,6 +48,7 @@ class _HomeViewState extends State<HomeView> {
var _filter = ""; // search filter var _filter = ""; // search filter
final searchFocus = FocusNode(); final searchFocus = FocusNode();
var sort = SortType.newest; var sort = SortType.newest;
OverlayEntry? overlayEntry;
@override @override
void didChangeDependencies() { void didChangeDependencies() {
@ -85,6 +86,7 @@ class _HomeViewState extends State<HomeView> {
if (b) return; if (b) return;
_searchActive = false; _searchActive = false;
_filter = ""; _filter = "";
overlayEntry?.remove();
setState(() {}); setState(() {});
}, },
child: Scaffold( child: Scaffold(
@ -253,6 +255,32 @@ class _HomeViewState extends State<HomeView> {
_searchActive = !_searchActive; _searchActive = !_searchActive;
if (!_searchActive) { if (!_searchActive) {
_filter = ""; _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(() {}); setState(() {});
} }
@ -574,25 +602,6 @@ class _HomeViewState extends State<HomeView> {
], ],
), ),
), ),
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();
},
),
),
),
], ],
), ),
), ),