加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

dart – 如何打开PopupMenuButton?

发布时间:2020-12-14 14:55:13 所属栏目:百科 来源:网络整理
导读:如何从第二个小部件打开弹出菜单? final button = new PopupMenuButton( itemBuilder: (_) = PopupMenuItemString[ new PopupMenuItemString( child: const Text('Doge'),value: 'Doge'),new PopupMenuItemString( child: const Text('Lion'),value: 'Lion'
如何从第二个小部件打开弹出菜单?

final button = new PopupMenuButton(
    itemBuilder: (_) => <PopupMenuItem<String>>[
          new PopupMenuItem<String>(
              child: const Text('Doge'),value: 'Doge'),new PopupMenuItem<String>(
              child: const Text('Lion'),value: 'Lion'),],onSelected: _doSomething);

final tile = new ListTile(title: new Text('Doge or lion?'),trailing: button);

我想通过点击图块来打开按钮的菜单.

解决方法

这可行,但不够优雅(并且与Rainer的解决方案具有相同的显示问题:

class _MyHomePageState extends State<MyHomePage> {
  final GlobalKey _menuKey = new GlobalKey();

  @override
  Widget build(BuildContext context) {
    final button = new PopupMenuButton(
        key: _menuKey,itemBuilder: (_) => <PopupMenuItem<String>>[
              new PopupMenuItem<String>(
                  child: const Text('Doge'),new PopupMenuItem<String>(
                  child: const Text('Lion'),onSelected: (_) {});

    final tile =
        new ListTile(title: new Text('Doge or lion?'),trailing: button,onTap: () {
          // This is a hack because _PopupMenuButtonState is private.
          dynamic state = _menuKey.currentState;
          state.showButtonMenu();
        });
    return new Scaffold(
      body: new Center(
        child: tile,),);
  }
}

我怀疑你实际要求的是类似于https://github.com/flutter/flutter/issues/254或https://github.com/flutter/flutter/issues/8277跟踪的内容 – 将标签与控件相关联并使标签可点击的能力 – 并且是Flutter框架中缺少的功能.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读