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
979 B

import 'package:ansu_ui/extension/num_extension.dart';
import 'package:flutter/material.dart';
/// ## 弹框菜单
///```dart
/// showASPopUpMenu<int>(
/// context: context,
/// items: [
/// PopupMenuItem(child: 'test'.text, value: 1),
/// ],
/// ).then((value) {});
/// ```
Future<T> showASPopUpMenu<T>({
@required BuildContext context,
@required List<PopupMenuEntry<T>> items,
T initValue,
}) async {
final RenderBox renderBox = context.findRenderObject();
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),
);
}