build method

  1. @override
Widget build(
  1. BuildContext context
)
override

Build the widget.

Implementation

@override
Widget build(BuildContext context) => Semantics(
  customSemanticsActions: {
    for (final v in values.where((e) => e != value))
      CustomSemanticsAction(label: _getValueName(v)): () => onChanged(v),
    if (nullable)
      CustomSemanticsAction(label: emptyValue): () => onChanged(null),
  },
  child: MenuAnchor(
    menuChildren: [
      if (nullable)
        Semantics(
          checked: value == null,
          selected: true,
          child: MenuItemButton(
            autofocus: value == null,
            child: Text(emptyValue),
            onPressed: () => onChanged(null),
          ),
        ),
      ...values.map((v) {
        final checked = v == value;
        return Semantics(
          checked: checked,
          selected: true,
          child: MenuItemButton(
            autofocus: checked,
            onPressed: () => onChanged(v),
            trailingIcon: SelectedIcon(selected: checked),
            child: Text(_getValueName(v)),
          ),
        );
      }),
    ],
    builder: (context, controller, child) => ListTile(
      autofocus: autofocus,
      title: Text(title),
      subtitle: Text(_getValueName(value)),
      onTap: controller.toggle,
      onLongPress: onLongPress,
    ),
  ),
);