toImage method
Method to convert the SfCircularChart as an image.
As this method is in the widget’s state class,
you have to use a global key to access the state to call this method.
Returns the dart:ui.image
final GlobalKey<SfCircularChartState> _key = GlobalKey();
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [SfCircularChart(
key: _key
series: <PieSeries<ChartData, String>>[
PieSeries<ChartData, String>(
enableTooltip: true,
),
],
),
RaisedButton(
child: Text(
'To Image',
),
onPressed: _renderImage,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20)),
)
],
),
);
}
Future<void> _renderImage() async {
dart_ui.Image data = await _key.currentState.toImage(pixelRatio: 3.0);
final bytes = await data.toByteData(format: dart_ui.ImageByteFormat.png);
if (data != null) {
await Navigator.of(context).push(
MaterialPageRoute(
builder: (BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Center(
child: Container(
color: Colors.white,
child: Image.memory(bytes.buffer.asUint8List()),
),
),
);
},
),
);
}
}
Implementation
/// Future<void> _renderImage() async {
/// dart_ui.Image data = await _key.currentState.toImage(pixelRatio: 3.0);
/// final bytes = await data.toByteData(format: dart_ui.ImageByteFormat.png);
/// if (data != null) {
/// await Navigator.of(context).push(
/// MaterialPageRoute(
/// builder: (BuildContext context) {
/// return Scaffold(
/// appBar: AppBar(),
/// body: Center(
/// child: Container(
/// color: Colors.white,
/// child: Image.memory(bytes.buffer.asUint8List()),
/// ),
/// ),
/// );
/// },
/// ),
/// );
/// }
///}
///```
Future<dart_ui.Image> toImage({double pixelRatio = 1.0}) async {
final RenderRepaintBoundary boundary = context.findRenderObject()
as RenderRepaintBoundary; //get the render object from context
final dart_ui.Image image =
await boundary.toImage(pixelRatio: pixelRatio); // Convert
// the repaint boundary as image
return image;
}