如何解决Flutter Modal Bottom Sheet 不适用于 AppBar 内的弹出菜单按钮
我遇到的问题是方法“showModalBottomSheet”在弹出菜单项的“onTap”函数中不起作用。单击弹出菜单条目时,模态底部工作表未显示。
这是我在 AppBar 的 actions 参数中的代码:
actions: [
PopupMenuButton(
itemBuilder: (BuildContext context) => choices
.map((Choice choice) => PopupMenuItem<Choice>(
child: Row(
children: [
choice.icon,SizedBox(width: 15),Text(choice.text),],),value: choice,onTap: () {
print('Modal Bottom Sheet should open.');
showModalBottomSheet(
context: context,builder: (context) {
return Container(
color: Colors.transparent,height: 184,);
},);
},))
.toList())
],
感谢您的帮助。
解决方法
如果您查看 PopupMenuItem 文档,您会注意到没有 onTap
方法。相反,您应该使用 PopupMenuButton
的 onSelected
来检测点击,如下所示:
actions: [
PopupMenuButton(
onSelected: _onChoiceSelected,itemBuilder: (BuildContext context) => choices.map((Choice choice) => PopupMenuItem<Choice>(
child: Row(...),value: choice
)).toList()
)
]
// ...
void _onChoiceSelected(Choice choice) {
showModalBottomSheet<void>(
context: context,builder: (context) => Container(color: Colors.transparent,height: 184),);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。