buildPopupMenuLayout method

LayoutBuilder buildPopupMenuLayout(
  1. Offset offset
)

Implementation

LayoutBuilder buildPopupMenuLayout(Offset offset) {
  return LayoutBuilder(builder: (context, constraints) {
    return GestureDetector(
      behavior: HitTestBehavior.translucent,
      onTap: () {
        dismiss();
      },
      onVerticalDragStart: (DragStartDetails details) {
        dismiss();
      },
      onHorizontalDragStart: (DragStartDetails details) {
        dismiss();
      },
      child: Container(
        child: Stack(
          children: <Widget>[
            // Triangle arrow paint
            Positioned(
              left: _showRect.left + _showRect.width / 2.0 - 7.5,
              top: _isTriangleDown ? offset.dy + (customHeight ?? popupHeight()) : (offset.dy - arrowHeight),
              child: CustomPaint(
                size: Size(15.0, arrowHeight),
                painter: TrianglePainter(
                  isDown: _isTriangleDown,
                  color: _backgroundColor,
                  triangleDirection: triangleDirection != null ? triangleDirection! : TriangleDirection.Straight,
                ),
              ),
            ),
            // Widgets
            Positioned(
              left: offset.dx,
              top: offset.dy,
              child: Card(
                elevation: popupElevation ?? 0,
                margin: EdgeInsets.zero,
                shape: RoundedRectangleBorder(
                  borderRadius: popupBorderRadius ?? BorderRadius.circular(10.0),
                ),
                child: Container(
                  width: popupWidth(),
                  height: displayBelowWidget ? customHeight : (customHeight ?? popupHeight()),
                  child: Column(
                    children: <Widget>[
                      ClipRRect(
                        borderRadius: popupBorderRadius ?? BorderRadius.circular(10.0),
                        child: Container(
                          width: popupWidth(),
                          height: displayBelowWidget ? customHeight : (customHeight ?? popupHeight()),
                          padding: EdgeInsets.all(5.0),
                          decoration: BoxDecoration(
                            color: _backgroundColor,
                            borderRadius: popupBorderRadius ?? BorderRadius.circular(10.0),
                          ),
                          child: GestureDetector(
                            onTap: () {
                              itemClicked(item);
                            },
                            child: Column(
                              mainAxisAlignment: MainAxisAlignment.center,
                              children: item.itemWidget != null
                                  ? [item.itemWidget!]
                                  : [
                                      item.getIconWidget!,
                                      Text(
                                        '${item.getTitle}',
                                        style: item.getTextStyle,
                                        textAlign: item.getTextAlign,
                                        overflow: displayBelowWidget ? TextOverflow.clip : TextOverflow.ellipsis,
                                      ),
                                    ],
                            ),
                          ),
                        ),
                      ),
                    ],
                  ),
                ),
              ),
            )
          ],
        ),
      ),
    );
  });
}