У меня есть собственный виджет, расположенный в Stack
. Этот пользовательский виджет создает элемент OverlayEntry
, связанный со своим положением, и вставляет его в элемент Overlay
.
Проблема в том, что это наложение всплывает над AppBar и FloatingActionButton.
Как поместить OverlayEntry
под AppBar
, но над содержимым моего Stack
?
UPD: Под "ниже" я имею в виду, что AppBar
должен плавать над OverlayEntry
(или перекрывать его, как если бы он имел больший z-индекс).
Вот что у меня есть:
Вот что я хотел бы иметь:
Код образца:
import 'package:flutter/material.dart';
main() {
runApp(
MaterialApp(
home: OverlayDemo(),
),
);
}
class OverlayDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('AppBar + Overlay'),
),
body: Stack(
children: [
Positioned(
top: 10,
left: 100,
child: WidgetWithOverlay()
)
],
)
);
}
}
class WidgetWithOverlay extends StatefulWidget {
const WidgetWithOverlay({
Key? key,
}) : super(key: key);
@override
_WidgetWithOverlayState createState() => _WidgetWithOverlayState();
}
class _WidgetWithOverlayState extends State<WidgetWithOverlay> {
OverlayEntry? overlayEntry;
void showOverlay() {
print(overlayEntry);
if (overlayEntry == null) {
overlayEntry = OverlayEntry(
builder: (BuildContext context) {
return Positioned(
top: 0.0,
left: 0.0,
child: IgnorePointer(
child: Container(
width: 100,
height: 100,
color: Colors.green,
),
)
);
}
);
Overlay.of(context)!.insert(overlayEntry!);
}
}
@override
Widget build(BuildContext context) {
return TextButton(
onPressed: showOverlay,
child: Text('Show Overlay')
);
}
}
Оберните леса с помощью SafeArea()
@Why_So_Ezz Не думаю, что это поможет.