openMenu method
Future<void>
openMenu(
- AppModel app,
- BuildContext context, {
- required RelativeRect position,
- RgbModel? popupMenuBackgroundColor,
Implementation
Future<void> openMenu(AppModel app, BuildContext context,
{required RelativeRect position,
required List<AbstractMenuItemAttributes> menuItems,
RgbModel? popupMenuBackgroundColor}) async {
var popupMenuItems = <PopupMenuItem<int>>[];
var i = 0;
for (var element in menuItems) {
var label = element.label ?? '?';
var p = PopupMenuItem<int>(
value: i,
child: element.isActive
? _frontEndStyle.textStyle().h3(app, context, label)
: _frontEndStyle.textStyle().h4(app, context, label));
popupMenuItems.add(p);
i++;
}
final result = await showMenu<int>(
context: context,
position: position,
items: popupMenuItems,
elevation: 8.0,
color: RgbHelper.color(rgbo: popupMenuBackgroundColor));
if (result != null) {
var item = menuItems[result];
if (item is MenuItemAttributes) {
item.onTap();
} else if (item is MenuItemWithMenuItems) {
await openMenu(app, context,
position: position,
menuItems: item.items,
popupMenuBackgroundColor: popupMenuBackgroundColor);
}
}
}