blob: c89bda3147bc4bdfa75a748c4890f8cdc67e2d2f [file] [log] [blame]
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'framework.dart';
/// The buttons that can appear in a context menu by default.
/// See also:
/// * [ContextMenuButtonItem], which uses this enum to describe a button in a
/// context menu.
enum ContextMenuButtonType {
/// A button that cuts the current text selection.
/// A button that copies the current text selection.
/// A button that pastes the clipboard contents into the focused text field.
/// A button that selects all the contents of the focused text field.
/// A button that deletes the current text selection.
/// Anything other than the default button types.
/// The type and callback for a context menu button.
/// See also:
/// * [AdaptiveTextSelectionToolbar], which can take a list of
/// ContextMenuButtonItems and create a platform-specific context menu with
/// the indicated buttons.
class ContextMenuButtonItem {
/// Creates a const instance of [ContextMenuButtonItem].
const ContextMenuButtonItem({
required this.onPressed,
this.type = ContextMenuButtonType.custom,
/// The callback to be called when the button is pressed.
final VoidCallback onPressed;
/// The type of button this represents.
final ContextMenuButtonType type;
/// The label to display on the button.
/// If a [type] other than [ContextMenuButtonType.custom] is given
/// and a label is not provided, then the default label for that type for the
/// platform will be looked up.
final String? label;
/// Creates a new [ContextMenuButtonItem] with the provided parameters
/// overridden.
ContextMenuButtonItem copyWith({
VoidCallback? onPressed,
ContextMenuButtonType? type,
String? label,
}) {
return ContextMenuButtonItem(
onPressed: onPressed ?? this.onPressed,
type: type ?? this.type,
label: label ?? this.label,
bool operator ==(Object other) {
if (other.runtimeType != runtimeType) {
return false;
return other is ContextMenuButtonItem
&& other.label == label
&& other.onPressed == onPressed
&& other.type == type;
int get hashCode => Object.hash(label, onPressed, type);
String toString() => 'ContextMenuButtonItem $type, $label';