首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >颤振:酒吧没有显示

颤振:酒吧没有显示
EN

Stack Overflow用户
提问于 2021-08-04 11:59:49
回答 1查看 252关注 0票数 0

我试图在条形图上显示api值,我的api数据如下所示

代码语言:javascript
复制
{leaves: 3, sick: 2, annual: 0, maternity: 1}

charts.dart

我从登录屏幕获取这些数据,并使用共享权限将其传递到离开屏幕。

我想把它显示在条形图上,这是我的尝试

代码语言:javascript
复制
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,))
      ],),
      )
      ,),);
    
  }
}

我在这里显示图表

代码语言:javascript
复制
  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个条形图,我是如何做到的?

请帮我做错事

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-04 12:31:52

您的数据对象不包含新设置的数据。

在_userDetails()中,4个变量是从prefs更新的,这应该工作得很好。因为状态已经更新,所以将调用生成。但是,build将不会在状态中使用这些新设置的变量,而是将访问和使用仅包含空字符串的“旧”数据对象。它不会被新对象覆盖。

我建议使用您已经检索到的prefs将数据对象放入状态。

代码语言:javascript
复制
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中,您可以访问这个数据对象并按预期使用它来检索它的所有值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68650874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档