Flutter中如何正确使用PopUpMenuItem onTap/onPressed?

3
什么是在Flutter中调用函数的正确方法,当点击PopupMenuItem时?因为组件本身并没有onTapped属性。离它最近的仅仅是设置PopupMenuItem组件的value值。所以我采取的方式是,在PopupMenuButton的onSelected参数中设置状态。我没有在互联网上找到任何人谈论这种情况,所以我认为值得从其他人那里获取意见。这是正确的做法吗?
我曾经尝试使用FlatButton作为PopupMenuButton的子元素,但是它没有起作用。似乎应用程序没有记录FlatButton的onTapped函数。
        PopupMenuButton<Choice>(
          onSelected: (Choice result) {
            setState(() {
              _selection = result;
              if (_selection == Choice.SIGN_OUT) {
                _signOut();
                print('[home.dart] _signOut()');
              }
            });
          },
          itemBuilder: (BuildContext context) => 
            <PopupMenuEntry<Choice>>[
            PopupMenuItem(
              child: Text(
                'Sign Out',
                style: TextStyle(color: Colors.black),
              ),
              value: Choice.SIGN_OUT,
            ),
          ],
        ),

期望的结果是在点击 PopupMenuItem 后调用一个函数。
1个回答

1

现在可以通过两种方式进行PopUpMenuItem的调用。

我们现在可以使用onTap方法来实现它。

                  PopupMenuItem(
                    value: 'share',
                    onTap: () {
                      print("hello world");
                    },
                    child: Text('Share'),
                  ),

或者可以像OP提到的那样,采用老派的方式来完成。
                onSelected: (value) {
                  switch (value) {
                    case ('subscribe'):
                      print('Subscribing');
                      break;
                    case ('edit'):
                      print('editing');
                      break;
                    case ('share'):
                      print('sharing');
                      break;
                    default:
                      return;
                  }
                },

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