Я использую кольцевую диаграмму, используя пакет charts_flutter V0.8.1 . Но когда я перехожу к следующему экрану и возвращаюсь к предыдущей странице (Donut page), диаграмма становится пустой. Сценарий: Как только я вижу следующий экран, я нажимаю кнопку «Назад». К вашему сведению, я использую образец кода Donut. https://google.github.io/charts/flutter/example/pie_charts/donut
import 'package:charts_flutter/flutter.dart' as charts;
import 'package:flutter/material.dart';
void main() {
runApp(MaterialApp(
debugShowCheckedModeBanner: false,
home: new DonutPieChart()
));
}
class DonutPieChart extends StatefulWidget {
@override
_DonutPieChartState createState() => new _DonutPieChartState();
}
class _DonutPieChartState extends State<DonutPieChart> {
List<charts.Series<Task, String>> _seriesPieData;
@override
void initState() {
super.initState();
_seriesPieData = List<charts.Series<Task, String>>();
_generateData();
}
_generateData() {
var piedata = [
new Task('T01', 35, Color(0xff3366cc)),
new Task('T02', 8, Color(0xff990099)),
new Task('T03', 10, Color(0xff109618)),
];
_seriesPieData.add(
charts.Series(
domainFn: (Task task, _) => task.task,
measureFn: (Task task, _) => task.taskvalue,
colorFn: (Task task, _) =>
charts.ColorUtil.fromDartColor(task.colorval),
id: 'Sample',
data: piedata,
labelAccessorFn: (Task row, _) => '${row.taskvalue}',
),
);
}
@override
Widget build(BuildContext _context) {
return Scaffold(
appBar: AppBar(
title: Text('Donut chart'),
),
body: GestureDetector(
onTap: () {
Navigator.of(_context).push(new MaterialPageRoute<bool>(
builder: (BuildContext context) => NextScreen()));
},
child: Column(
children: <Widget>[
Expanded(
child: Container(
alignment: Alignment.center,
height: 230,
width: 280,
child: charts.PieChart(_seriesPieData,
animate: true,
animationDuration: Duration(seconds: 1),
defaultInteractions: false,
behaviors: [
new charts.DatumLegend(
outsideJustification:
charts.OutsideJustification.endDrawArea,
horizontalFirst: false,
desiredMaxRows: 3,
cellPadding: new EdgeInsets.only(
left: 8, right: 4.0, bottom: 4.0),
entryTextStyle: charts.TextStyleSpec(
color: charts.Color.fromHex(code: "#000000"),
fontFamily: 'Georgia',
fontSize: 15),
)
],
defaultRenderer: new charts.ArcRendererConfig(
arcWidth: 30,
strokeWidthPx: 0,
arcRendererDecorators: [
new charts.ArcLabelDecorator(
insideLabelStyleSpec: new charts.TextStyleSpec(
fontSize: 16,
color:
charts.Color.fromHex(code: "#000000")),
labelPosition: charts.ArcLabelPosition.inside)
])),
),
),
],
),
));
}
}
class Task {
String task;
double taskvalue;
Color colorval;
Task(this.task, this.taskvalue, this.colorval);
}
class NextScreen extends StatefulWidget {
@override
_NextScreenState createState() => new _NextScreenState();
}
class _NextScreenState extends State<NextScreen> {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: AppBar(title: Text(' ')),
);
}
}