class _MainAppState extends State<MainApp> {
late List<SalesData> salesData;
late TooltipBehavior _tooltipBehavior;
int? pointIndex;
List<Color> colors = [
Colors.blue,
Colors.red,
];
@override
void initState() {
salesData = [
SalesData(10, 70),
SalesData(20, 60),
SalesData(30, 20),
SalesData(40, 50),
SalesData(50, 30),
];
_tooltipBehavior = TooltipBehavior(
enable: true,
);
super.initState();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
body: SfCartesianChart(
onTooltipRender: (TooltipArgs tooltipArgs) {
SchedulerBinding.instance
.addPostFrameCallback((Duration timeStamp) {
setState(() {
pointIndex = tooltipArgs.pointIndex!.toInt();
});
});
},
primaryXAxis: NumericAxis(),
primaryYAxis: NumericAxis(),
series: <ChartSeries>[
BarSeries<SalesData, num>(
dataSource: salesData,
xValueMapper: (SalesData sales, _) => sales.period,
yValueMapper: (SalesData sales, _) => sales.sales,
pointColorMapper: (SalesData sales, int index) =>
pointIndex != null
&& pointIndex == index
? colors[1]
: colors[0],
),
],
tooltipBehavior: _tooltipBehavior,
),
),
);
}
}
|