Articles in this section
Category / Section

How to customize data labels using callback events (SfCartesianChart) ?

2 mins read

In this article, we described how to customize the data label using events in cartesian charts.

 

The Flutter Cartesian chart widget provides support for customizing data labels through callback events. Callback events are functions or methods passed as arguments into another function that can perform actions when required. The chart widget provides the onDataLabelRender callback event to customize data labels as needed.

Refer the following instructions to customize the data label using its callback event in the following ways.

 

Customize text of the data labels

 

Step 1: Initialize the SfCartesianChart with the required properties.

SfCartesianChart(
                primaryXAxis: CategoryAxis(),
                series: <LineSeries<SalesData, String>>[
                  LineSeries<SalesData, String>(
                      dataSource: ChartData,
                      xValueMapper: (SalesData sales, _) => sales.year,
                      yValueMapper: (SalesData sales, _) => sales.sales,
                      //Enable datalabel settings
                      dataLabelSettings: DataLabelSettings(isVisible: true)
                  )
                ]
  )

 

Step 2: Define the onDataLabelRender event in the SfCartesianChart. To customize the displaying text of the data labels in the chart, you can use the text argument from the event for suffixing or prefixing some texts to improve the readability.

SfCartesianChart(
                onDataLabelRender: (DataLabelRenderArgs args) {
                   args.text = '${args.text}\nSold';
                },
)

 

Customize text style of the data labels

 

Step 1: Initialize the SfCartesianChart with the required properties.

SfCartesianChart(
                primaryXAxis: CategoryAxis(),
                series: <LineSeries<SalesData, String>>[
                  LineSeries<SalesData, String>(
                      dataSource: ChartData,
                      xValueMapper: (SalesData sales, _) => sales.year,
                      yValueMapper: (SalesData sales, _) => sales.sales,
                      //Enable datalabel settings
                      dataLabelSettings: DataLabelSettings(isVisible: true)
                  )
                ]
  )

 

Step 2: Define the onDataLabelRender event in the SfCartesianChart. To customize the text style properties of the data labels in the chart, you can use the textStyle argument from the event and customize the values such as color, fontFamily, fontSize, fontStyle, fontWeight.

SfCartesianChart(
                onDataLabelRender: (DataLabelRenderArgs args) {
                   TextStyle? textStyle = args.textStyle;
                   if(args.pointIndex == 0) {
                    args.textStyle.copyWith(color: Colors.orange[700]);
                  }
                  if(args.pointIndex == 1) {
                    textStyle =
                        args.textStyle.copyWith(fontFamily: 'DancingScript');
                  }
                  if(args.pointIndex == 2) {
                    textStyle = args.textStyle.copyWith(fontSize: 20);
                  }
                  if(args.pointIndex == 3) {
                    textStyle =
                        args.textStyle.copyWith(fontStyle: FontStyle.italic);
                  }
                  if(args.pointIndex == 4) {
                    textStyle =
                        args.textStyle.copyWith(fontWeight: FontWeight.bold);
                  }
                  args.textStyle = textStyle ?? args.textStyle;
                },
)

 

Customize different background colours for different data labels

 

The following steps explain how to use the OnDataLabelRender event to customize background color of the data labels in the Cartesian chart.

Step 1: Initialize the Cartesian chart widget with the required properties.

SfCartesianChart(
                primaryXAxis: CategoryAxis(),
                series: <LineSeries<SalesData, String>>[
                  LineSeries<SalesData, String>(
                      dataSource: ChartData,
                      xValueMapper: (SalesData sales, _) => sales.year,
                      yValueMapper: (SalesData sales, _) => sales.sales,
                      //Enable datalabel settings
                      dataLabelSettings: DataLabelSettings(isVisible: true)
                  )
                ]
  )

 

Step 2: Define the onDataLabelRender event in the SfCartesianChart. You can customize the background colors of the data labels with argument such as color and pointIndex.

SfCartesianChart(
            onDataLabelRender: (DataLabelRenderArgs args) {
                   if(args.pointIndex == 0) {
                    args.color = Colors.red;
                  }
                  if(args.pointIndex == 1) {
                    args.color = Colors.blue;
                  }
                  if(args.pointIndex == 2) {
                    args.color = Colors.yellow;
                  }
                  if(args.pointIndex == 3) {
                    args.color = Colors.green;
                  }
                  if(args.pointIndex == 4) {
                    args.color = Colors.brown;
                  }
            },
)

 

Screenshots

 

Data label with customized text

 

Data label with customized text

 

Data label with customized text style

 

Data label with customized text style

 

Data label with customized background colour

 

Data label with customized background colour

 

For further reference onDataLabelRender event, please refer to the user guide here.

 

View the Github Sample here.

 


Did you find this information helpful?
Yes
No
Help us improve this page
Please provide feedback or comments
Comments (0)
Please  to leave a comment
Access denied
Access denied