From 5bf39c83b18d2c5677f26d2e00d9a605912a21ce Mon Sep 17 00:00:00 2001 From: dab246 Date: Tue, 26 Jul 2022 16:31:40 +0700 Subject: [PATCH] TF-738 Create PopupMenuOverlayWidget builder --- .../widget/popup_menu_overlay_widget.dart | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 lib/features/base/widget/popup_menu_overlay_widget.dart diff --git a/lib/features/base/widget/popup_menu_overlay_widget.dart b/lib/features/base/widget/popup_menu_overlay_widget.dart new file mode 100644 index 000000000..6cc276b84 --- /dev/null +++ b/lib/features/base/widget/popup_menu_overlay_widget.dart @@ -0,0 +1,53 @@ + +import 'package:custom_pop_up_menu/custom_pop_up_menu.dart'; +import 'package:flutter/material.dart'; +import 'package:pointer_interceptor/pointer_interceptor.dart'; + +class PopupMenuOverlayWidget extends StatelessWidget { + + final List listButtonAction; + final Widget iconButton; + final double? elevation; + final double? borderRadius; + final Color? backgroundColor; + final CustomPopupMenuController? controller; + + const PopupMenuOverlayWidget({ + Key? key, + required this.iconButton, + required this.listButtonAction, + this.elevation, + this.borderRadius, + this.backgroundColor, + this.controller, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return CustomPopupMenu( + controller: controller, + menuBuilder: () { + return Material( + elevation: elevation ?? 10, + borderRadius: BorderRadius.circular(borderRadius ?? 12), + color: backgroundColor ?? Colors.white, + child: PointerInterceptor( + child: Container( + decoration: BoxDecoration( + color: backgroundColor ?? Colors.white, + borderRadius: BorderRadius.circular(borderRadius ?? 12)), + padding: const EdgeInsets.symmetric(horizontal: 5), + child: Wrap(children: listButtonAction), + ), + ), + ); + }, + pressType: PressType.singleClick, + position: PreferredPosition.bottom, + barrierColor: Colors.transparent, + arrowSize: 0.0, + verticalMargin: 8, + child: iconButton, + ); + } +} \ No newline at end of file