button method
Widget
button(
- AppModel app,
- BuildContext context,
- AbstractMenuItemAttributes item,
- RgbModel? selectedIconColor,
- RgbModel? iconColor,
Implementation
Widget button(
AppModel app,
BuildContext context,
AbstractMenuItemAttributes item,
RgbModel? menuBackgroundColor,
RgbModel? selectedIconColor,
RgbModel? iconColor,
) {
var color = item.isActive
? RgbHelper.color(rgbo: selectedIconColor)
: RgbHelper.color(rgbo: iconColor);
var rgbcolor = item.isActive ? selectedIconColor : iconColor;
if (item is MenuItemAttributes) {
if (item.icon != null) {
return IconButton(
icon: IconHelper.getIconFromModel(iconModel: item.icon)!,
color: color,
onPressed: item.onTap);
} else if (item.imageURL != null) {
return IconButton(
icon: Image.network(item.imageURL!),
color: RgbHelper.color(rgbo: iconColor),
onPressed: item.onTap);
} else {
return Center(
child: _frontEndStyle.buttonStyle().button(
app,
context,
label: item.label == null ? '?' : item.label!,
onPressed: item.onTap,
));
}
} else if (item is MenuItemWithMenuItems) {
var icon =
IconHelper.getIconFromModel(iconModel: item.icon, color: rgbcolor);
var text = _frontEndStyle.textStyle().text(app, context, (item.label!));
var popupMenu = popupMenuButton<int>(app, context,
icon: icon,
child: icon == null ? text : null, onSelected: (int result) {
var thisItem = item.items[result];
if (thisItem is MenuItemWithMenuItems) {
_hasMenu.openMenu(app, context,
position: RelativeRect.fromLTRB(1000.0, 0.0, 0.0, 0.0),
menuItems: thisItem.items,
popupMenuBackgroundColorOverride: menuBackgroundColor);
} else if (thisItem is MenuItemAttributes) {
thisItem.onTap();
}
}, itemBuilder: (BuildContext context) {
var entries = <PopupMenuEntry<int>>[];
var index = 0;
for (var thisItem in item.items) {
var label = thisItem.label!;
var menuItem = popupMenuItem<int>(
app,
context,
value: index,
label: label,
);
entries.add(menuItem);
index++;
}
return entries;
});
return Theme(
data: Theme.of(context).copyWith(
cardColor: RgbHelper.color(rgbo: menuBackgroundColor),
),
child: popupMenu);
} else {
throw Exception("item $item not supported");
}
}