resolve static method
- @internal
- BuildContext context, {
- required PullDownMenuItemTheme? itemTheme,
- required bool enabled,
- required bool isDestructive,
The helper method to quickly resolve PullDownMenuItemTheme from PullDownButtonTheme.itemTheme or PullDownMenuItemTheme.defaults as well as from theme data from PullDownMenuItem.
Implementation
@internal
static PullDownMenuItemTheme resolve(
BuildContext context, {
required PullDownMenuItemTheme? itemTheme,
required bool enabled,
required bool isDestructive,
}) {
final theme = PullDownMenuItemTheme.of(context);
final defaults = PullDownMenuItemTheme.defaults(context);
var resolved = PullDownMenuItemTheme(
destructiveColor: itemTheme?.destructiveColor ??
theme?.destructiveColor ??
defaults.destructiveColor!,
iconSize: itemTheme?.iconSize ?? theme?.iconSize ?? defaults.iconSize!,
checkmark:
itemTheme?.checkmark ?? theme?.checkmark ?? defaults.checkmark!,
checkmarkWeight: itemTheme?.checkmarkWeight ??
theme?.checkmarkWeight ??
defaults.checkmarkWeight!,
checkmarkSize: itemTheme?.checkmarkSize ??
theme?.checkmarkSize ??
defaults.checkmarkSize!,
textStyle: defaults.textStyle!
.merge(theme?.textStyle)
.merge(itemTheme?.textStyle),
iconActionTextStyle: defaults.iconActionTextStyle!
.merge(theme?.iconActionTextStyle)
.merge(itemTheme?.iconActionTextStyle),
onHoverColor: itemTheme?.onHoverColor ??
theme?.onHoverColor ??
defaults.onHoverColor!,
onHoverTextStyle: defaults.onHoverTextStyle!
.merge(theme?.onHoverTextStyle)
.merge(itemTheme?.onHoverTextStyle),
);
if (isDestructive) {
resolved = resolved.copyWith(
textStyle: resolved.textStyle!.copyWith(
color: resolved.destructiveColor,
),
iconActionTextStyle: resolved.iconActionTextStyle!.copyWith(
color: resolved.destructiveColor,
),
);
}
if (!enabled) {
resolved = resolved.copyWith(
textStyle: resolved.textStyle!.copyWith(
color: resolved.textStyle!.color!.withOpacity(
_PullDownMenuItemThemeDefaults._disabledOpacity(context),
),
),
iconActionTextStyle: resolved.iconActionTextStyle!.copyWith(
color: resolved.iconActionTextStyle!.color!.withOpacity(
_PullDownMenuItemThemeDefaults._disabledOpacity(context),
),
),
);
}
return resolved;
}