如何解决添加数据后如何自动更新条形图?
我想在用户提交新数据时自动更新条形图。我不想使用Refreshindicator,因为在这种情况下,用户应拉动直到数据更新。我想更新条形图而无需上拉,我想在用户添加新数据时自动使它。请找到我的以下代码:
Widget build(BuildContext context) {
print('build() Chart');
return AspectRatio(
aspectRatio: 1,child: Card(
elevation: 6,margin: EdgeInsets.all(10),child: Container(
padding: EdgeInsets.all(8),child: Stack(
children: <Widget>[
Padding(
padding: const EdgeInsets.all(10),child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,mainAxisAlignment: MainAxisAlignment.start,mainAxisSize: MainAxisSize.max,children: <Widget>[
Expanded(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 8.0),child: BarChart(
isPlaying ? randomData() : mainBarData(),swapAnimationDuration: animDuration,),const SizedBox(
height: 12,],Padding(
padding: const EdgeInsets.all(8.0),child: Align(
alignment: Alignment.topRight,child: IconButton(
icon: Icon(
isPlaying ? Icons.pause : Icons.play_arrow,color: const Color(0xff0f4a3c),onpressed: () {
setState(() {
isPlaying = !isPlaying;
if (isPlaying) {
refreshState();
}
});
},)
],);
}
List<BarChartGroupData> showingGroups() => List.generate(7,(i) {
print("Switchhhhhh");
switch (i) {
case 0:
return makeGroupData(0,total_Monday,isTouched: i == touchedindex);
case 1:
return makeGroupData(1,total_Tuesday,isTouched: i == touchedindex);
case 2:
return makeGroupData(2,total_Wednesday,isTouched: i == touchedindex);
case 3:
return makeGroupData(3,total_Thursday,isTouched: i == touchedindex);
case 4:
return makeGroupData(4,total_Friday,isTouched: i == touchedindex);
case 5:
return makeGroupData(5,total_Saturday,isTouched: i == touchedindex);
case 6:
return makeGroupData(6,total_Sunday,isTouched: i == touchedindex);
default:
return null;
}
});
解决方法
没有所有代码,很难说出某些函数的功能以及使用无状态小部件还是有状态小部件,但是我猜测#include <iostream>
extern char **environ;
void dump_env() {
for(char **var = environ; *var; var++) {
std::cout << *var << std::endl;
}
}
int main(int argc,char **argv) {
dump_env();
return 0;
}
和randomData
会生成您的条形图图。
要实现所需的动态行为,您需要使基础数据保持状态。这可以通过多种方法来实现,但是最简单的内置方法是使用StatefulWidget更改数据源。然后,确保用于从基础数据生成图形的函数在build方法中,以便在基础数据发生更改时更新这些函数的结果。
Here is an example of a StatefulWidget in action,而不是用于将项目添加到列表。这些概念应适用于您的情况。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。