# Custom Context Menus
This sample shows how to create and customize cross-platform context menus,
such as the text selection toolbar on mobile or the right click menu on desktop.
| ![Cascading example screenshot ](https://raw.githubusercontent.com/flutter/samples/main/experimental/context_menus/screenshots/cascading.png ) | ![Custom button example screenshot ](https://raw.githubusercontent.com/flutter/samples/main/experimental/context_menus/screenshots/custom.png ) | ![Email example screenshot ](https://raw.githubusercontent.com/flutter/samples/main/experimental/context_menus/screenshots/email.png ) | ![Widget example screenshot ](https://raw.githubusercontent.com/flutter/samples/main/experimental/context_menus/screenshots/image.png ) |
| --- | --- | --- | --- |
## Running the sample
Just run `flutter run` in the same directory as this README file.
## The examples
### [Anywhere](https://github.com/flutter/samples/blob/main/experimental/context_menus/lib/anywhere_page.dart)
Shows how to create a context menu in the parts of an app that don't related to
text selection. For example, a menu in a desktop app that shows when the
background of the app is right clicked.
### [Cascading menus](https://github.com/flutter/samples/blob/main/experimental/context_menus/lib/cascading_menu_page.dart)
Shows how to create a context menu with cascading submenus using
[SubmenuButton ](https://master-api.flutter.dev/flutter/material/SubmenuButton-class.html ).
### [Custom buttons](https://github.com/flutter/samples/blob/main/experimental/context_menus/lib/custom_buttons_page.dart)
Shows how to customize the default buttons in the existing context menus.
### [Custom menu](https://github.com/flutter/samples/blob/main/experimental/context_menus/lib/custom_menu_page.dart)
Shows how to use any custom widgets as the menu itself, including the option to
keep the default buttons.
### [Default values](https://github.com/flutter/samples/blob/main/experimental/context_menus/lib/default_values_page.dart)
Demonstrates how the
[contextMenuBuilder ](https://master-api.flutter.dev/flutter/material/TextField/contextMenuBuilder.html )
property works with various possible values.
### [Email button](https://github.com/flutter/samples/blob/main/experimental/context_menus/lib/email_button_page.dart)
Shows how to create an "email" button in the default context menu that shows
only when an email address is selected.
### [Field types](https://github.com/flutter/samples/blob/main/experimental/context_menus/lib/field_types_page.dart)
Shows how context menus work in the various different field widgets:
EditableText, TextField, and CupertinoTextField.
### [Global selection](https://github.com/flutter/samples/blob/main/experimental/context_menus/lib/global_selection_page.dart)
Shows how to create a custom context menu in non-editable selection with
[SelectionArea ](https://master-api.flutter.dev/flutter/material/SelectionArea-class.html ).
### [On a widget](https://github.com/flutter/samples/blob/main/experimental/context_menus/lib/image_page.dart)
Shows how to make a widget show a context menu on right click or long press, in
this case an Image widget.
### [Modified action](https://github.com/flutter/samples/blob/main/experimental/context_menus/lib/modified_action_page.dart)
Shows how to modify an existing button so that a custom action is performed when
it is tapped.
### [Reordered buttons](https://github.com/flutter/samples/blob/main/experimental/context_menus/lib/reordered_buttons_page.dart)
Shows how to change the order of the default buttons.