xbLineChartDefHoverBuilder function

XBLineChartHoverBuilderRet xbLineChartDefHoverBuilder(
  1. int? hoverIndex,
  2. double hoverDx,
  3. double maxHeight,
  4. String dateStr,
  5. List<XBLineChartModel> models,
  6. XBLineChartTextGetter? valueTextGetter,
)

Implementation

XBLineChartHoverBuilderRet xbLineChartDefHoverBuilder(
  int? hoverIndex,
  double hoverDx,
  double maxHeight,
  String dateStr,
  List<XBLineChartModel> models,
  XBLineChartTextGetter? valueTextGetter,
) {
  if (hoverIndex == null) {
    return XBLineChartHoverBuilderRet(hover: Container(), width: 0);
  }
  double dateStrHeight = 20;
  double padding = 8;
  TextStyle dateStrStyle = const TextStyle(color: Colors.white, fontSize: 16);
  double maxWidth = xbLineChartCaculateTextWidth(dateStr, dateStrStyle);
  for (var model in models) {
    double tempWidth = _hoverItemWidth(
        name: model.name,
        value: model.values[hoverIndex],
        valueTextGetter: valueTextGetter);
    if (tempWidth > maxWidth) {
      maxWidth = tempWidth;
    }
  }
  maxWidth = maxWidth + padding * 2;
  return XBLineChartHoverBuilderRet(
      hover: ClipRRect(
        borderRadius: BorderRadius.circular(10),
        child: Container(
          width: maxWidth,
          color: Colors.black,
          child: Padding(
            padding:
                EdgeInsets.only(top: padding, bottom: padding, left: padding),
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                Container(
                  height: dateStrHeight,
                  child: Text(
                    dateStr,
                    style: dateStrStyle,
                  ),
                ),
                Container(
                  constraints:
                      BoxConstraints(maxHeight: maxHeight - dateStrHeight),
                  child: SingleChildScrollView(
                    child: Column(
                      children: List.generate(models.length, (index) {
                        final model = models[index];
                        final value = model.values[hoverIndex];
                        return _hoverItem(
                            color: model.color,
                            name: model.name,
                            value: value,
                            valueTextGetter: valueTextGetter);
                      }),
                    ),
                  ),
                )
              ],
            ),
          ),
        ),
      ),
      width: maxWidth);
}