首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我单击PopupMenuButton时,PopupMenuItems没有显示

当我单击PopupMenuButton时,PopupMenuItems没有显示
EN

Stack Overflow用户
提问于 2022-05-05 12:02:40
回答 1查看 126关注 0票数 0

我正在制作一个颤振应用,在那里我有一个PopupMenuButton

当我单击PopupMenuButton时,PopupMenuItems没有显示。以下是代码:

代码语言:javascript
复制
class _ConfigurationListScreenState extends State < ConfigurationListScreen > {
    // const ConfigurationListScreen({Key? key}) : super(key: key);
    dynamic dataJson;

    @override
    Widget build(BuildContext context) {
      var configurationListChannel =
        ConfigurationListChannel(downlink: updateListData);
      configurationListChannel.requestConfigurationList();
      final GlobalKey _menuKey = GlobalKey();

      final button = PopupMenuButton(
        key: _menuKey,
        itemBuilder: (_) => < PopupMenuItem < String >> [
          PopupMenuItem < String > (child: Text('Doge'), value: 'Doge'),
          PopupMenuItem < String > (child: Text('Lion'), value: 'Lion'),
        ],
        onSelected: (_) {});
      return Scaffold(
        appBar: AppBar(
          title: Text("Configuration List"),
        ),
        body: Container(
          padding: EdgeInsets.all(20),
          child: ListView.builder(
            itemCount: dataJson.length,
            itemBuilder: (BuildContext context, int index) {
              return Card(
                child: Row(
                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
                  children: [
                    Container(
                      padding: EdgeInsets.all(16),
                      child: Column(
                        children: [
                          updateText('device_id', index),
                          updateText('downlink_value', index),
                          updateText('downlink_desc', index),
                          updateText('downlink_status', index),
                          updateText('sent_date', index),
                          updateText('created_date', index),
                        ],
                      ),
                    ),
                    Container(height: 150, color: Colors.red, child: button, alignment: Alignment.topRight, )
                  ],
                ));
            },
          ),
        ),
      );
    }

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-06 09:33:52

我不知道你为什么需要一个GlobalKey。但是,您试图在列表中多次使用具有相同全局键的PopupMenuButton。这导致了问题,您不能在小部件树中有重复的全局键。因此,如果没有添加全局键,菜单项就可以正常工作。这是你的工作代码片段,但是,我切断了与问题无关的部分。

代码语言:javascript
复制
Widget build(BuildContext context) {
      final button = PopupMenuButton(
        itemBuilder: (_) => < PopupMenuItem < String >> [
          PopupMenuItem < String > (child: Text('Doge'), value: 'Doge'),
          PopupMenuItem < String > (child: Text('Lion'), value: 'Lion'),
        ],
        onSelected: (_) {});
      return Scaffold(
        appBar: AppBar(
          title: const Text("Configuration List"),
        ),
        body: Container(
          padding: const EdgeInsets.all(20),
          child: ListView.builder(
            itemCount: 3,
            itemBuilder: (BuildContext context, int index) {
              return Card(
                child: 
                   Container(
                     height: 150, 
                     color: Colors.red, 
                     child: button, 
                     alignment: Alignment.topRight,
                   )
                );
            },
          ),
        ),
      );
    } 

你能解释一下全球钥匙是用来做什么的吗?如果您需要,您应该有一个独特的每个按钮。不仅仅是列表中使用的一个按钮。但当你可能需要它们的时候,这并不是一个常见的场景。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72126858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档