import 'package:aves/model/entry/entry.dart'; import 'package:aves/model/entry/extensions/multipage.dart'; import 'package:aves/view/view.dart'; import 'package:aves/widgets/common/action_controls/quick_choosers/common/button.dart'; import 'package:aves/widgets/common/action_controls/quick_choosers/share_chooser.dart'; import 'package:aves_model/aves_model.dart'; import 'package:flutter/material.dart'; class ShareButton extends ChooserQuickButton { final Set entries; const ShareButton({ super.key, required super.blurred, required this.entries, super.onChooserValue, super.focusNode, required super.onPressed, }); @override State createState() => _ShareButtonState(); } class _ShareButtonState extends ChooserQuickButtonState { EntryAction get action => EntryAction.share; @override Widget get icon => action.getIcon(); @override String get tooltip => action.getText(context); @override bool get hasChooser => super.hasChooser && options.isNotEmpty; List get options => [ if (widget.entries.any((entry) => entry.isMotionPhoto)) ...[ ShareAction.imageOnly, ShareAction.videoOnly, ], ]; @override Widget buildChooser(Animation animation, PopupMenuPosition chooserPosition) { return FadeTransition( opacity: animation, child: ScaleTransition( scale: animation, alignment: chooserPosition == PopupMenuPosition.over ? Alignment.bottomCenter : Alignment.topCenter, child: ShareQuickChooser( valueNotifier: chooserValueNotifier, options: options, autoReverse: false, blurred: widget.blurred, chooserPosition: chooserPosition, pointerGlobalPosition: pointerGlobalPosition, ), ), ); } }