xbLineChartDefHoverBuilder function
XBLineChartHoverBuilderRet
xbLineChartDefHoverBuilder(
- int? hoverIndex,
- double hoverDx,
- double maxHeight,
- String dateStr,
- List<
XBLineChartModel> models, - 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);
}