popupMenuButton<T> static method

SectionTile popupMenuButton<T>({
  1. Key? key,
  2. required String titleText,
  3. String? subTitle,
  4. List<T>? items,
  5. Icon? icon,
  6. Icon? popupIcon,
  7. VoidCallback? onCanceled,
  8. required Color color,
  9. List<PopupMenuEntry<T>> itemBuilder(
    1. BuildContext
    )?,
  10. T? initialValue,
  11. ValueSetter<T>? onSelected,
  12. String? tooltip,
  13. double? elevation,
  14. EdgeInsetsGeometry padding = const EdgeInsets.all(8.0),
  15. Offset offset = Offset.zero,
  16. bool enabled = true,
  17. ShapeBorder? shape,
  18. Color? popUpColor,
  19. bool? enableFeedback,
  20. bool dense = false,
})

Implementation

static SectionTile popupMenuButton<T>({
  Key? key,
  required String titleText,
  String? subTitle,
  List<T>? items,
  Icon? icon,
  Icon? popupIcon,
  VoidCallback? onCanceled,
  required Color color,
  List<PopupMenuEntry<T>> Function(BuildContext)? itemBuilder,
  T? initialValue,
  ValueSetter<T>? onSelected,
  String? tooltip,
  double? elevation,
  EdgeInsetsGeometry padding = const EdgeInsets.all(8.0),
  Offset offset = Offset.zero,
  bool enabled = true,
  ShapeBorder? shape,
  Color? popUpColor,
  bool? enableFeedback,
  bool dense = false,
}) {
  final GlobalKey menuKey = GlobalKey();

  popupIcon ??= const Icon(Icons.arrow_drop_down);
  itemBuilder ??= (context) {
    return items!
        .map((e) => PopupMenuItem<T>(
              value: e,
              child: Text(e.toString()),
            ))
        .toList();
  };

  return SectionTile(
    key: key,
    titleText: titleText,
    subTitle: subTitle == null ? null : Text(subTitle),
    icon: icon,
    color: color,
    dense: dense,
    onTap: () => (menuKey.currentState as PopupMenuButtonState).showButtonMenu(),
    trailing: PopupMenuButton<T>(
      key: menuKey,
      icon: popupIcon,
      itemBuilder: itemBuilder,
      color: popUpColor,
      elevation: elevation,
      enableFeedback: enableFeedback,
      enabled: enabled,
      initialValue: initialValue,
      offset: offset,
      onCanceled: onCanceled,
      onSelected: onSelected,
      padding: padding,
      shape: shape,
      tooltip: tooltip,
    ),
  );
}