Flutter如何在ListTile上获取弹出菜单?

14

我想在 ListTile 下方弹出一个弹出菜单。 title 显示描述,subtitle 显示选定的值并附带一些消息,onTap 会打开弹出菜单,用户可以在其中选择一个值。

我尝试将 DropdownButtonHideUnderline 放在 subtitle 中,但这会显示一个箭头,并且显然不响应 ListTileonTab 事件。

如何在 ListTile 上获取一个弹出菜单?


你能分享一段代码片段吗?这样我就可以帮你找出问题所在了。 - Pushan Gupta
并不是我错了,而是我不知道这是否可能,如果可能的话该如何解决。 - Robin Dijkhof
查看被接受的答案,最后他说这是当前Flutter版本中缺少的功能。 - Govaadiyo
1个回答

39

也许你可以尝试使用PopuMenuButton。

PopupMenuButton<String>(
    onSelected: (String value) {
    setState(() {
        _selection = value;
    });
  },
  child: ListTile(
    leading: IconButton(
      icon: Icon(Icons.add_alarm),
      onPressed: () {
        print('Hello world');
      },
    ),
    title: Text('Title'),
    subtitle: Column(
      children: <Widget>[
        Text('Sub title'),
        Text(_selection == null ? 'Nothing selected yet' : _selection.toString()),
      ],
    ),
    trailing: Icon(Icons.account_circle),
  ),
  itemBuilder: (BuildContext context) => <PopupMenuEntry<String>>[
        const PopupMenuItem<String>(
          value: 'Value1',
          child: Text('Choose value 1'),
        ),
        const PopupMenuItem<String>(
          value: 'Value2',
          child: Text('Choose value 2'),
        ),
        const PopupMenuItem<String>(
          value: 'Value3',
          child: Text('Choose value 3'),
        ),
      ],
)

请看如何打开PopupMenuButton?


这真是太完美了。 - Robin Dijkhof
谢谢,我不知道child属性完全替换了按钮内容! - nipunasudha
1
有没有办法在长按而不是轻按时执行这个操作? - Daniel Vilela
@DanielVilela,如果您没有找到解决方案,可以在user1111分享的链接中找到。 - emanuel sanga

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接