You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ansu_ui/lib/pop_up_menu/pop_up_menu.dart

35 lines
998 B

import 'package:ansu_ui/extension/num_extension.dart';
import 'package:flutter/material.dart';
/// ## 弹框菜单
///```dart
/// int result = await showASPopUpMenu<int>(
/// context: context,
/// items: [
/// PopupMenuItem(child: Text('test'), value: 1),
/// ],
/// );
/// ```
Future<T?> showASPopUpMenu<T>({
required BuildContext context,
required List<PopupMenuEntry<T>> items,
T? initValue,
}) async {
final RenderBox renderBox = context.findRenderObject() as RenderBox;
Size size = renderBox.size;
return await showMenu(
context: context,
initialValue: initValue,
position: RelativeRect.fromRect(
Rect.fromPoints(
renderBox.localToGlobal(Offset.zero,
ancestor: Overlay.of(context)!.context.findRenderObject()),
renderBox.localToGlobal(size.bottomRight(Offset.zero)),
),
Offset.zero & Overlay.of(context)!.context.size!,
),
items: items,
shape: RoundedRectangleBorder(borderRadius: 10.radius),
);
}