- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在 Android 中有一个像 popupwindow 这样的功能。
我已经为此尝试过。
class CommunityMenu {
static OverlayEntry overlayEntry;
static void showMenu(BuildContext context) {
if (overlayEntry == null) {
overlayEntry = new OverlayEntry(builder: (context) {
return Positioned(
right: 12,
top: 60,
child: Container(
color: Colors.white,
width: 132,
height: 153,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
GestureDetector(
onTap: (){
overlayEntry.remove();
},
child: Row(
children: <Widget>[
Text(
"Text1",
style: TextStyle(
color: Color(0xff4d4d4d), fontSize: 14),
)
],
),
),
GestureDetector(
onTap: () {overlayEntry.remove();
},
child: Row(
children: <Widget>[
GestureDetector(
onTap: (){
overlayEntry.remove();
},
child: Text(
"Text2",
style: TextStyle(
color: Color(0xff4d4d4d), fontSize: 14),
)
)
],
),
),
GestureDetector(
onTap: (){
overlayEntry.remove();
},
child: Row(
children: <Widget>[
Text(
"Text3",
style: TextStyle(
color: Color(0xff4d4d4d), fontSize: 14),
)
],
),
)
],
),
),
);
});
}
Overlay.of(context).insert(overlayEntry);
}
static void dismissMenu() {
if (overlayEntry != null) {
overlayEntry.remove();
overlayEntry = null;
}
}
}
最佳答案
您可以将叠加层放入堆栈并使底层占据全屏,将其子层包装在调用 overlayEntry.remove() 的 GestureDetector 中。下面的代码显示了我的意思。此外,您在弹出窗口中的 onTap 调用只是调用 .remove() 但这意味着仍会构建覆盖条目。您已经有一个可以调用的dismiss() 函数(这就是我所做的)。
return Stack(
children: <Widget>[
Positioned.fill(
child: GestureDetector(
onTap:dismissMenu,
child: Container(
color: Colors.transparent,
),
)
),
Positioned(
right: 12,
top: 60,
child: //column code here
),
],
);
关于flutter - 当我在 Flutter 中单击外部时,如何删除 overlayEntry?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58443098/
我有一个显示全屏的 OverlayEntry。我想调度一个 Action 并在overlayentry按钮的顶部关闭它 OverlayEntry _buildOverlayFeedback(Build
我正在使用 OverlayEntry 并且我想在 Back Press 上删除条目。 OverlayEntry overlayEntry; overlayEntry = OverlayEntr
我只是想删除我之前插入到 Overlay 中的 OverlayEntry: rootOverlay.insert(entry); 但我似乎无法找到一种方法。 我确实在 OverlayState 类中找
我正在尝试将 Container 插入 Overlay,但此代码出错。 class _MyHomePageState extends State { @override void didCha
我正在使用 Flutter 1.2.1 编写一个 flutter 应用。 在我的 StatefulWidget 的 initState() 中,我调用了一个使用以下代码创建的 showOverlay(
我正在尝试在 OverlayEntry 中显示一些小部件,例如 CheckBox 或 Switch。叠加层是在点击事件中构建的。问题是 bool _value 仅在我第一次点击叠加层内的 CheckB
我想在 Android 中有一个像 popupwindow 这样的功能。 我已经为此尝试过。 class CommunityMenu { static OverlayEntry overlayEn
我正在尝试制作如下所示的叠加层: https://www.didierboelens.com/2018/06/how-to-create-a-toast-or-notifications-notion
我正在尝试在启动后立即处理我的应用程序的屏幕。 预期路线为: boot -> check if is logged in -> if yes -> navigator.push() to MainWi
我是一名优秀的程序员,十分优秀!