Flutter PopupMenuItem


简介

Material 中窗口弹出的菜单

  • 如果需要创建一个显示弹出菜单的按钮,请考虑使用 PopupMenuButton.

基本用法

  • PopupMenuDivider 是一条水平分割线,注意数组要使用父类 PopupMenuEntry,配合其他 item 样式共同使用

实例演示

import 'package:flutter/material.dart';

class PopupMenuDividerDemo extends StatefulWidget {
  _PopupMenuDividerDemoState createState() => _PopupMenuDividerDemoState();
}

class _PopupMenuDividerDemoState extends State<PopupMenuDividerDemo> {
  void showInSnackBar(String value) {
    Scaffold.of(context)
        .showSnackBar( SnackBar(content:  Text('You selected: $value')));
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      child: ListTile(
          title: const Text('An item with a sectioned menu'),
          trailing: PopupMenuButton<String>(
              padding: EdgeInsets.zero,
              onSelected: showInSnackBar,
              itemBuilder: (BuildContext context) => <PopupMenuEntry<String>>[
                    const PopupMenuItem<String>(
                        value: 'Preview',
                        child: ListTile(
                            leading: Icon(Icons.visibility),
                            title: Text('Preview'))),
                    const PopupMenuItem<String>(
                        value: 'Share',
                        child: ListTile(
                            leading: Icon(Icons.person_add),
                            title: Text('Share'))),
                    const PopupMenuItem<String>(
                        value: 'Get Link',
                        child: ListTile(
                            leading: Icon(Icons.link),
                            title: Text('Get link'))),
                    const PopupMenuDivider(),
                    const PopupMenuItem<String>(
                        value: 'Remove',
                        child: ListTile(
                            leading: Icon(Icons.delete), title: Text('Remove')))
                  ])),
    );
  }
}