我试图在条形图上显示api值,我的api数据如下所示
{leaves: 3, sick: 2, annual: 0, maternity: 1}charts.dart
我从登录屏幕获取这些数据,并使用共享权限将其传递到离开屏幕。
我想把它显示在条形图上,这是我的尝试
class LeavesCharts extends StatelessWidget {
final List<LeavesSeries> data;
LeavesCharts({@required this.data});
@override
Widget build(BuildContext context) {
List<charts.Series<LeavesSeries, String>> series=[
charts.Series(
id: "Leaves",
data: data,
domainFn: (LeavesSeries series, _)=>series.totalleave,
measureFn: (LeavesSeries series,_)=>series.annual,
colorFn: (LeavesSeries series,_)=>series.barColor,
)
];
return
Container(
height: 400,
padding: EdgeInsets.all(20),
child: Card(child: Padding(padding: const EdgeInsets.all(8.0),
child: Column(children: <Widget>[
Text("History of leaves"),
Expanded(child: charts.BarChart(series,animate: true,))
],),
)
,),);
}
}我在这里显示图表
String annualCount="4";
String totalleaveCount="4";
String sickCount="4";
String maternityCount="1";
class _RequestForLeaveState extends State<RequestForLeave> {
//getting values using shared perference
_userDetails() async {
SharedPreferences myPrefs = await SharedPreferences.getInstance();
setState(() {
sickCount=myPrefs.getString('sickcount');
totalleaveCount=myPrefs.getString('totalleave');
maternityCount=myPrefs.getString('maternitycount');
annualCount=myPrefs.getString('annualcount');
;
});
}
final List<LeavesSeries> data=[
LeavesSeries(
totalleave: totalleaveCount,
maternity: maternityCount,
sick:sickCount,
annual: 3,
barColor:charts.ColorUtil.fromDartColor(Colors.blue)
),
];
Widget build(BuildContext context) {
return new Scaffold(
appBar: new MyAppBar(
title: Text("Request for leave"),
// onpressed: () {
// Navigator.push(
// context, MaterialPageRoute(builder: (context) => Profile()));
// },
),
drawer: drawer(),
body: LeavesCharts(data:data)
);
}
}
class LeavesSeries {
String totalleave;
int annual;
String sick;
String maternity;
final charts.Color barColor;
LeavesSeries({@required this.totalleave,@required this.annual,@required this.sick,@required this.maternity, @required this.barColor});
}但是它没有显示任何条形,这是输出

更新输出:--我用一些值初始化变量,并根据这个值显示条形图,但是我想为每个变量设置4个条形图,我是如何做到的?

请帮我做错事
发布于 2021-08-04 12:31:52
您的数据对象不包含新设置的数据。
在_userDetails()中,4个变量是从prefs更新的,这应该工作得很好。因为状态已经更新,所以将调用生成。但是,build将不会在状态中使用这些新设置的变量,而是将访问和使用仅包含空字符串的“旧”数据对象。它不会被新对象覆盖。
我建议使用您已经检索到的prefs将数据对象放入状态。
class _RequestForLeaveState extends State<RequestForLeave> {
LeavesCharts data;
@override
initState() {
super.initState();
data = LeavesSeries(
totalleave: 0,
maternity: 0,
sick: 0,
annual: 0,
barColor: charts.ColorUtil.fromDartColor(Colors.blue)
);
}
//getting values using shared perference
_userDetails() async {
SharedPreferences myPrefs = await SharedPreferences.getInstance();
setState(() {
data = LeavesSeries(
totalleave: myPrefs.getString('totalleave'),
maternity: myPrefs.getString('maternitycount'),
sick: myPrefs.getString('sickcount'),
annual: myPrefs.getString('annualcount'),
barColor: charts.ColorUtil.fromDartColor(Colors.blue)
)
});
}
...
}然后,在build中,您可以访问这个数据对象并按预期使用它来检索它的所有值。
https://stackoverflow.com/questions/68650874
复制相似问题