TF-79 Create popmenu for tablet

This commit is contained in:
dab246
2021-09-20 16:11:49 +07:00
committed by Dat H. Pham
parent c7a3e90a68
commit 8413615e29
21 changed files with 177 additions and 223 deletions
@@ -9,18 +9,21 @@ typedef OnCloseActionClick = void Function();
typedef OnMarkAsEmailReadActionClick = void Function(List<PresentationEmail> listEmail);
typedef OnRemoveEmailActionClick = void Function(List<PresentationEmail> listEmail);
typedef OnOpenContextMenuActionClick = void Function(List<PresentationEmail> listEmail);
typedef OnOpenPopupMenuActionClick = void Function(List<PresentationEmail> listEmail, RelativeRect position);
class AppBarThreadSelectModeActiveBuilder {
OnCloseActionClick? _onCloseActionClick;
OnMarkAsEmailReadActionClick? _onMarkAsEmailReadActionClick;
OnRemoveEmailActionClick? _onRemoveEmailActionClick;
OnOpenContextMenuActionClick? _onOpenContextMenuActionClick;
OnOpenPopupMenuActionClick? _onOpenPopupMenuActionClick;
final BuildContext _context;
final ImagePaths _imagePaths;
final List<PresentationEmail> _listEmail;
final ResponsiveUtils _responsiveUtils;
AppBarThreadSelectModeActiveBuilder(this._context, this._imagePaths, this._listEmail);
AppBarThreadSelectModeActiveBuilder(this._context, this._imagePaths, this._listEmail, this._responsiveUtils);
void addCloseActionClick(OnCloseActionClick onCloseActionClick) {
_onCloseActionClick = onCloseActionClick;
@@ -38,6 +41,10 @@ class AppBarThreadSelectModeActiveBuilder {
_onOpenContextMenuActionClick = onOpenContextMenuActionClick;
}
void addOnOpenPopupMenuActionClick(OnOpenPopupMenuActionClick onOpenPopupMenuActionClick) {
_onOpenPopupMenuActionClick = onOpenPopupMenuActionClick;
}
Widget build() {
return Container(
key: Key('app_bar_thread_select_mode_active'),
@@ -104,6 +111,18 @@ class AppBarThreadSelectModeActiveBuilder {
if (_onOpenContextMenuActionClick != null) {
_onOpenContextMenuActionClick!(_listEmail);
}})
.onTapActionClick((details) {
if (_onOpenPopupMenuActionClick != null && !_responsiveUtils.isMobile(_context)) {
final screenSize = MediaQuery.of(_context).size;
final offset = details.globalPosition;
final position = RelativeRect.fromLTRB(
offset.dx,
offset.dy,
screenSize.width - offset.dx,
screenSize.height - offset.dy,
);
_onOpenPopupMenuActionClick!(_listEmail, position);
}})
.build(),
]
);