getAdaptiveButtons static method

Iterable<Widget> getAdaptiveButtons(
  1. BuildContext context,
  2. List<ContextMenuButtonItem> buttonItems
)

Returns a List of Widgets generated by turning buttonItems into the default context menu buttons for the current platform.

This is useful when building a text selection toolbar with the default button appearance for the given platform, but where the toolbar and/or the button actions and labels may be custom.

This sample demonstrates how to use getAdaptiveButtons to generate default button widgets in a custom toolbar.
link

To create a local project with this code sample, run:
flutter create --sample=material.AdaptiveTextSelectionToolbar.getAdaptiveButtons.1 mysample

See also:

Implementation

static Iterable<Widget> getAdaptiveButtons(BuildContext context, List<ContextMenuButtonItem> buttonItems) {
  switch (Theme.of(context).platform) {
    case TargetPlatform.iOS:
      return buttonItems.map((ContextMenuButtonItem buttonItem) {
          return CupertinoTextSelectionToolbarButton.buttonItem(
            buttonItem: buttonItem,
          );
        });
    case TargetPlatform.fuchsia:
    case TargetPlatform.android:
      final List<Widget> buttons = <Widget>[];
      for (int i = 0; i < buttonItems.length; i++) {
        final ContextMenuButtonItem buttonItem = buttonItems[i];
        buttons.add(TextSelectionToolbarTextButton(
          padding: TextSelectionToolbarTextButton.getPadding(i, buttonItems.length),
          onPressed: buttonItem.onPressed,
          alignment: AlignmentDirectional.centerStart,
          child: Text(getButtonLabel(context, buttonItem)),
        ));
      }
      return buttons;
    case TargetPlatform.linux:
    case TargetPlatform.windows:
      return buttonItems.map((ContextMenuButtonItem buttonItem) {
        return DesktopTextSelectionToolbarButton.text(
          context: context,
          onPressed: buttonItem.onPressed,
          text: getButtonLabel(context, buttonItem),
        );
      });
    case TargetPlatform.macOS:
      return buttonItems.map((ContextMenuButtonItem buttonItem) {
        return CupertinoDesktopTextSelectionToolbarButton.text(
          onPressed: buttonItem.onPressed,
          text: getButtonLabel(context, buttonItem),
        );
      });
  }
}