Skip to content

SfCartesianChart (Multiple LineSeries display errors when refresh the widget) #40

Closed
@baliejun

Description

@baliejun
  • flutter version any
  • syncfusion_flutter_charts : ^18.3.44
    1. It's normal to run the app the first time
    image

**2.when refresh the widget or perform hot reload , it will display errors(end to end),The data is obtained by network request **
image

code
`class EchartsWidget extends StatefulWidget{

@OverRide
State createState() {
return EchartsWidgetState();
}

}

class EchartsWidgetState extends State{
RefreshController _refreshController =
RefreshController(initialRefresh: false);

void _onRefresh() async {
// monitor network fetch
await Future.delayed(Duration(milliseconds: 1000));
if (mounted)
setState(() {
});
// if failed,use refreshFailed()
_refreshController.refreshCompleted();
}

List resultDataList = [];
List todayDataListOld = [];
List yesterdayDataListOld = [];
var unit;
List todayDataList = List();
List yesterdayDataList = List();

timestampToDateechart(timestamp) {
var date = DateTime.fromMillisecondsSinceEpoch(timestamp);
return date.toString().substring(0, 16);
}

getEchartData(List resultDataList) {

  ResultData data1 = resultDataList[0];
  ResultData data2 = resultDataList[1];
  if (data1.name == "今日") {
    todayDataListOld = data1.data;
    yesterdayDataListOld = data2.data;
  } else {
    todayDataListOld = data2.data;
    yesterdayDataListOld = data1.data;
  }


  for (int i = 0; i < todayDataListOld.length; i++) {
    String timestamp = timestampToDateechart(todayDataListOld[i].date-(24 * 60 * 60 * 1000));
    print("今日" + timestamp);
    var time = DateTime.parse(timestamp);
    var value = double.parse(todayDataListOld[i].value);
    todayDataList.add(new EchartsData(time, value));
  }

  for (int i = 0; i < yesterdayDataListOld.length; i++) {
    String timestamp = timestampToDateechart(yesterdayDataListOld[i].date);
    var time = DateTime.parse(timestamp);
    print("昨日" + timestamp);
    var value = double.parse(yesterdayDataListOld[i].value) ;
    yesterdayDataList.add(new EchartsData(time, value));
  }

}

@OverRide
Widget build(BuildContext context) {
return SmartRefresher(
enablePullDown: true,
header: MaterialClassicHeader(),
controller: _refreshController,
onRefresh: _onRefresh,
child: Container(
child: FutureBuilder(
future: WholeFactoryService().getEchartsData(),
builder: (BuildContext context, AsyncSnapshot snapshot){
if(snapshot.connectionState == ConnectionState.done){
resultDataList = snapshot.data;
getEchartData(resultDataList);
return Container(
width: 300,
height: 300,
child: SfCartesianChart(
title: ChartTitle(
text: '发电负荷(MW)',
alignment: ChartAlignment.near
),
legend: Legend(
isVisible:true,
position: LegendPosition.auto,
),
backgroundColor: Color(0xff2775c7),
// Initialize category axis
primaryXAxis: DateTimeAxis(
//isVisible: true,
dateFormat: DateFormat.Hm(),

                  ),
                  primaryYAxis: NumericAxis(
                    axisLine: AxisLine(width: 0),
                  ),

                  series: <LineSeries<EchartsData, DateTime>>[
                    LineSeries<EchartsData, DateTime>(
                        color: Color(0xff05fcff),
                        // Bind data source
                        dataSource: todayDataList,
                        xValueMapper: (EchartsData data, _) => data.time,
                        yValueMapper: (EchartsData data, _) => data.value,
                        legendItemText: "今日",

                    ),
                    LineSeries<EchartsData, DateTime>(

                        color: Color(0xfff5a92f),
                        // Bind data source
                        dataSource: yesterdayDataList,
                        xValueMapper: (EchartsData data, _) => data.time,
                        yValueMapper: (EchartsData data, _) => data.value,
                        legendItemText: "昨日",
                        isVisible: true,

                    ),
                  ]
              ),
            );

          }else{
            return Container();
          }
        },
      ),
    ),
);

}
}

class EchartsData {
EchartsData(this.time, this.value);

DateTime time;
num value;
}`

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions