@@ -29,68 +29,50 @@ class MyHomePage extends StatefulWidget {
2929}
3030
3131class _MyHomePageState extends State <MyHomePage > {
32- late TooltipBehavior _tooltipBehavior;
33- late TrackballBehavior _trackballBehavior;
34- late Future <List <SalesData >> _future;
32+ List <SalesData > chartData = [];
3533
3634 @override
3735 void initState () {
38- _tooltipBehavior = TooltipBehavior (enable: true );
39- _trackballBehavior = TrackballBehavior (enable: true );
40- _future = loadSalesData ();
36+ loadSalesData ();
4137 super .initState ();
4238 }
4339
44- Future <List <SalesData >> loadSalesData () async {
45- List <SalesData > chartData = [];
40+ Future loadSalesData () async {
4641 String jsonString = await getJsonFromFirebaseRestAPI ();
4742 final jsonResponse = json.decode (jsonString);
4843 setState (() {
49- for (Map <String , dynamic > i in jsonResponse) chartData.add (SalesData .fromJson (i));
44+ for (Map <String , dynamic > i in jsonResponse)
45+ chartData.add (SalesData .fromJson (i));
5046 });
51-
52- return chartData;
5347 }
5448
5549 Future <String > getJsonFromFirebaseRestAPI () async {
5650 var url = "https://flutterdemo-f6d47.firebaseio.com/chartSalesData.json" ;
5751 var response = await http.get (Uri .parse (url));
58-
5952 return response.body;
6053 }
6154
6255 @override
6356 Widget build (BuildContext context) {
6457 return Scaffold (
65- appBar: AppBar (
66- title: const Text ('Syncfusion Flutter chart' ),
67- ),
68- body: Center (
69- child: FutureBuilder <List <SalesData >>(
70- future: _future,
71- builder: (context, snapshot) {
72- if (snapshot.data != null ) {
73- print ('data' );
74- return SfCartesianChart (
75- primaryXAxis: CategoryAxis (),
76- // Chart title
77- title: ChartTitle (text: 'Half yearly sales analysis' ),
78- // Enable legend
79- legend: Legend (isVisible: true ),
80- // Enable tooltip
81- tooltipBehavior: _tooltipBehavior,
82- trackballBehavior: _trackballBehavior,
83- series: < ChartSeries <SalesData , String >> [
84- LineSeries <SalesData , String >(
85- dataSource: snapshot.data! ,
86- xValueMapper: (SalesData sales, _) => sales.month,
87- yValueMapper: (SalesData sales, _) => sales.sales,
88- // Enable data label
89- dataLabelSettings:
90- DataLabelSettings (isVisible: true ))
91- ]);
92- }
93- return Card (
58+ appBar: AppBar (
59+ title: const Text ('Syncfusion Flutter chart' ),
60+ ),
61+ body: Center (
62+ child: chartData.isNotEmpty
63+ ? SfCartesianChart (
64+ primaryXAxis: CategoryAxis (),
65+ // Chart title
66+ title: ChartTitle (text: 'Half yearly sales analysis' ),
67+ series: < ChartSeries <SalesData , String >> [
68+ LineSeries <SalesData , String >(
69+ dataSource: chartData,
70+ xValueMapper: (SalesData sales, _) => sales.month,
71+ yValueMapper: (SalesData sales, _) => sales.sales,
72+ // Enable data label
73+ dataLabelSettings: DataLabelSettings (isVisible: true ))
74+ ])
75+ : Card (
9476 elevation: 5.0 ,
9577 child: Container (
9678 height: 100 ,
@@ -115,9 +97,8 @@ class _MyHomePageState extends State<MyHomePage> {
11597 ),
11698 ),
11799 ),
118- );
119- }),
120- ));
100+ )),
101+ );
121102 }
122103}
123104
0 commit comments