如何从第二个小部件打开弹出菜单?
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);
我想button通过点击打开菜单tile。
button
tile
这可行,但是不美观(并且显示问题与上述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'), value: 'Doge'), new PopupMenuItem<String>( child: const Text('Lion'), value: '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框架中缺少的功能。