【问题标题】:Display flutter chart from database从数据库显示颤振图
【发布时间】:2020-01-12 20:33:46
【问题描述】:

这里我在颤动图表上显示来自数据库的数据,但是在浏览器中它看起来像 .if 这是我的代码

class Chart extends StatefulWidget {
  final String ..;

  Chart({this.user_id, this.projectName, this.userName});
  @override
  _ChartState createState() => _ChartState(user_id: this.user_id, projectName: this.projectName, userName: this.userName);
}

class _ChartState extends State<Chart> {
  String /..;

  _ChartState({this.projectName, this.user_id, this.userName});
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: FutureBuilder(
        future: ActivityController.getWorkTimeByUiPn({
      "user_id": user_id,
      "project_name": projectName,
    }),
        builder: (context, snapshot) {
          if (snapshot.hasError);
          return snapshot.hasData
              ? Itemchart(
                  iList: snapshot.data,
                )
              : Center();
        },
      ),
    );
  }
}

class OrdinalSales {
  final String name;
  final int count;

  OrdinalSales(this.name, this.count);
}

class Itemchart extends StatelessWidget {
  final List<dynamic> iList;
  Itemchart({this.iList});

  @override
  Widget build(BuildContext context) {
    List<OrdinalSales> tsdata = [];
    if(iList != null){
      for (final i in iList) {
        try{
          tsdata.add(OrdinalSales(i['project_name'], i['durasi']));
        }catch (e) {
          print(e.toString());
        }
      }
    }else{
      return Text("NULL");
    }

    var series = [
      charts.Series(
        domainFn: (OrdinalSales ordinalsales, _) => ordinalsales.name,
        measureFn: (OrdinalSales ordinalsales, _) => ordinalsales.count,
        id: 'OrdinalSales',
        data: tsdata,
      )
    ];
    var chart = charts.BarChart(series, animate: true);
    var chartWidget = Padding(
      padding: EdgeInsets.all(32.0),
      child: SizedBox(
        width: 700.0,
        height: 400.0,
        child: chart,
      ),
    );
    return ListView(
      scrollDirection: Axis.horizontal,
      children: <Widget>[
        Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              "Jumlah  : ${iList.length.toString()}",
              style: Theme.of(context).textTheme.title,
            ),
            chartWidget,
            //Text(tsdata.toString())
          ],
        ),
      ],
    );
  }
}

数据没有出现,我在这里有点困惑,因为当我尝试print (tsdata.toString ()) 结果[].. 我认为数据丢失/未包含在 OrdinarySales 类或 tsdata 中?当我尝试打印(iList.toString())时,数据就在那里

【问题讨论】:

    标签: flutter dart flutter-web


    【解决方案1】:

    可能 iList 是一个字符串列表,检查它是否是具有所需键的对象列表。

    for (var i in iList) {
      print(i.runtimeType);
    }
    

    尝试类似:

    Itemchart(iList: [
            {'project_name': 'first', 'durasi': 1},
            {'project_name': 'second', 'durasi': 2},
            {'project_name': 'third', 'durasi': 3},
          ]),
        ),
    

    如果您看到图表,则问题出在数据上,而不是图表或 OrdinalSales 类,因此您提供的代码运行良好。但是我很难说 iList 数据出了什么问题,因为我没有看到它..

    希望它能帮助您朝着正确的方向迈出下一步

    【讨论】:

    • 当我打印数据时,结果是Expected a value of type 'int', but got one of type 'String'
    • 可能您正在使用 json(或类似的东西),并且您需要在尝试在图表中显示之前反序列化日期
    • 当我尝试打印时 (i.runtimeType);结果是_JsonMap
    • 在 cmets 中格式化代码 sn-ps 很难,所以我更新了答案
    猜你喜欢
    • 1970-01-01
    • 2021-03-29
    • 2020-11-15
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    相关资源
    最近更新 更多