showTooltip static method
void
showTooltip(
- BuildContext context,
- CKToolTipPositionV3 position,
- String tooltipText, {
- bool? showClose = false,
- VoidCallback? onCloseClick,
- bool? clickMaskDismiss = true,
- int? xOffset,
- List<
CKTooltipModalV3> ? list, - double? maxWidth,
- ValueChanged<
int> ? onItemClick, - bool? isCenter,
- bool? useAnimation,
- VoidCallback? onDismiss,
- InlineSpan? richContent,
- Widget? bottomWidget,
Implementation
static void showTooltip(
BuildContext context,
CKToolTipPositionV3 position,
String tooltipText, {
bool? showClose = false,
VoidCallback? onCloseClick,
bool? clickMaskDismiss = true,
int? xOffset,
List<CKTooltipModalV3>? list,
double? maxWidth,
ValueChanged<int>? onItemClick,
///气泡固定在屏幕中间
bool? isCenter,
///是否使用动画,默认不使用
bool? useAnimation,
///气泡消失回调
VoidCallback? onDismiss,
///富文本内容
InlineSpan? richContent,
///自定义底部布局
Widget? bottomWidget,
}) {
RenderBox renderBox = context.findRenderObject() as RenderBox;
//目标控件的坐标
Offset targetPosition = renderBox.localToGlobal(Offset.zero);
double targetWidth = renderBox.size.width;
Offset targetBuilder(Offset targetOffset, Size targetSize) {
switch (position) {
case CKToolTipPositionV3.startCenter:
case CKToolTipPositionV3.startTop:
case CKToolTipPositionV3.startBottom:
case CKToolTipPositionV3.endCenter:
case CKToolTipPositionV3.endTop:
case CKToolTipPositionV3.endBottom:
case CKToolTipPositionV3.topCenter:
case CKToolTipPositionV3.bottomCenter:
case CKToolTipPositionV3.topStart:
return Offset(targetPosition.dx + (xOffset ?? 0), targetPosition.dy);
default:
return Offset(targetPosition.dx - targetWidth / 2 + (xOffset ?? 0), targetPosition.dy);
}
}
Alignment alignment;
//气泡弹窗位置
switch (position) {
case CKToolTipPositionV3.topCenter:
alignment = Alignment.topCenter;
break;
case CKToolTipPositionV3.topStart:
alignment = Alignment.topLeft;
break;
case CKToolTipPositionV3.topEnd:
alignment = Alignment.topRight;
break;
case CKToolTipPositionV3.bottomCenter:
alignment = Alignment.bottomCenter;
break;
case CKToolTipPositionV3.bottomStart:
alignment = Alignment.bottomLeft;
break;
case CKToolTipPositionV3.bottomEnd:
alignment = Alignment.bottomRight;
break;
case CKToolTipPositionV3.startCenter:
alignment = Alignment.centerLeft;
break;
case CKToolTipPositionV3.startTop:
alignment = Alignment.centerLeft;
break;
case CKToolTipPositionV3.startBottom:
alignment = Alignment.centerLeft;
break;
case CKToolTipPositionV3.endCenter:
alignment = Alignment.centerRight;
break;
case CKToolTipPositionV3.endTop:
alignment = Alignment.centerRight;
break;
case CKToolTipPositionV3.endBottom:
alignment = Alignment.centerRight;
break;
}
SmartDialog.config.attach = SmartConfigAttach(
attachAlignmentType: SmartAttachAlignmentType.inside,
clickMaskDismiss: clickMaskDismiss ?? true,
alignment: Alignment.center,
usePenetrate: false);
SmartDialog.showAttach(
targetBuilder: (isCenter ?? false) ? null : targetBuilder,
maskColor: Colors.transparent,
targetContext: context,
alignment: alignment,
tag: tooltipText,
bindWidget: context,
useAnimation: false,
builder: (context) {
return CKTooltipWidgetV3(
text: tooltipText,
position: position,
targetWidth: targetWidth,
showClose: showClose,
list: list,
tooltipMaxWidth: maxWidth,
richContent: richContent,
bottomWidget: bottomWidget,
onItemClick: (value) {
SmartDialog.dismiss(tag: tooltipText);
onItemClick?.call(value);
},
onCloseClick: () {
SmartDialog.dismiss(tag: tooltipText);
if (onCloseClick != null) {
onCloseClick();
}
},
);
},
onDismiss: () {
onDismiss?.call();
},
);
}