Display a beautiful material context menu using pure Flutter.
It works both on touch devices and on desktop devices.
See a demo here!
- modern, emphasizing animation according to material design guidelines
- handles screen edges and oversize
- very efficient code (< 250 lines)
You can easily display a context menu using the following code:
Widget build() {
return ContextMenuArea(
builder: (context) => [
ListTile(
title: Text('Option 1'),
onTap: () {
Navigator.of(context).pop();
ScaffoldMessenger.of(context)
.showSnackBar(SnackBar(content: Text('Whatever')));
},
)
],
child: Card(
color: Theme
.of(context)
.primaryColor,
child: Center(
child: Text('Press somewhere for context menu.'),
),
),
);
}
A more complicated way manually triggering a context menu using showContextMenu()
is:
Widget build() {
return GestureDetector(
onSecondaryTapDown: (details) =>
showContextMenu(
details.globalPosition, context, items, verticalPadding, width),
child: Text('Tap!'));
}
For the web, edit your index.html
and add the following in the <body>
tag:
<body oncontextmenu="return false;">
This project is EUPL licensed. For further details, consult LICENSE.