feat(mobile): pass original theme to ViewerKebabMenu for consistent styling

pull/24461/head
idubnori 2025-12-09 02:47:41 +09:00
parent 45d4e2c24f
commit ec1f7578f6
3 changed files with 12 additions and 3 deletions

View File

@ -46,6 +46,8 @@ class ViewerTopAppBar extends ConsumerWidget implements PreferredSizeWidget {
opacity = 0;
}
final originalTheme = context.themeData;
final actions = <Widget>[
if (album != null && album.isActivityEnabled && album.isShared)
IconButton(
@ -58,10 +60,10 @@ class ViewerTopAppBar extends ConsumerWidget implements PreferredSizeWidget {
const FavoriteActionButton(source: ActionSource.viewer, iconOnly: true),
if (asset.hasRemote && isOwner && asset.isFavorite)
const UnFavoriteActionButton(source: ActionSource.viewer, iconOnly: true),
const ViewerKebabMenu(),
ViewerKebabMenu(originalTheme: originalTheme),
];
final lockedViewActions = <Widget>[const ViewerKebabMenu()];
final lockedViewActions = <Widget>[ViewerKebabMenu(originalTheme: originalTheme)];
return IgnorePointer(
ignoring: opacity < 255,

View File

@ -9,7 +9,9 @@ import 'package:immich_mobile/providers/user.provider.dart';
import 'package:immich_mobile/utils/action_button.utils.dart';
class ViewerKebabMenu extends ConsumerWidget {
const ViewerKebabMenu({super.key});
const ViewerKebabMenu({super.key, this.originalTheme});
final ThemeData? originalTheme;
@override
Widget build(BuildContext context, WidgetRef ref) {
@ -28,6 +30,7 @@ class ViewerKebabMenu extends ConsumerWidget {
isOwner: isOwner,
isCasting: isCasting,
timelineOrigin: timelineOrigin,
originalTheme: originalTheme,
);
final menuChildren = ViewerKebabMenuButtonBuilder.build(kebabContext, context, ref);

View File

@ -181,12 +181,14 @@ class ViewerKebabMenuButtonContext {
final bool isOwner;
final bool isCasting;
final TimelineOrigin timelineOrigin;
final ThemeData? originalTheme;
const ViewerKebabMenuButtonContext({
required this.asset,
required this.isOwner,
required this.isCasting,
required this.timelineOrigin,
this.originalTheme,
});
}
@ -218,6 +220,7 @@ enum ViewerKebabMenuButtonType {
ViewerKebabMenuButtonType.openInfo => BaseActionButton(
label: 'open_asset_info'.tr(),
iconData: Icons.info_outline,
iconColor: context.originalTheme?.iconTheme.color,
menuItem: true,
onPressed: () => EventStream.shared.emit(const ViewerOpenBottomSheetEvent()),
),
@ -225,6 +228,7 @@ enum ViewerKebabMenuButtonType {
ViewerKebabMenuButtonType.viewInTimeline => BaseActionButton(
label: 'view_in_timeline'.t(context: buildContext),
iconData: Icons.image_search,
iconColor: context.originalTheme?.iconTheme.color,
menuItem: true,
onPressed: () async {
await buildContext.maybePop();