Flutter 如何在颤振图中添加标签?

Flutter 如何在颤振图中添加标签?,flutter,Flutter,我想从Json文件中为X轴和Y轴添加标签。我不知道如何在文件的图形中添加标签。这是我的Json文件 [ { "saleyear": "2015", "saleval": "10", "salelabel": "first" }, { "saleyear": "2016", "saleval": "30", "salelabel": "second" }, { "saleyear": "2017", "sa

我想从Json文件中为X轴和Y轴添加标签。我不知道如何在文件的图形中添加标签。这是我的Json文件

    [
  {
    "saleyear": "2015",
    "saleval": "10",
    "salelabel": "first"
  },
  {
    "saleyear": "2016",
    "saleval": "30",
    "salelabel": "second"
  },
  {
    "saleyear": "2017",
    "saleval": "40",
    "salelabel": "third"
  },
  {
    "saleyear": "2018",
    "saleval": "10",
    "salelabel": "fourth"
  }
]
import 'package:flutter/material.dart';
import 'package:charts_flutter/flutter.dart' as charts;
import 'dart:convert';

class HomePage extends StatefulWidget {
  final Widget child;

  HomePage({Key key, this.child}) : super(key: key);

  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  List<charts.Series<Sales, String>> seriesBarData;

  _generateData() async {
    final load =
        await DefaultAssetBundle.of(context).loadString("asset/data.json");
    var decoded = json.decode(load);
    List<Sales> sales = [];
    for (var item in decoded) {
      sales.add(Sales.fromJson(item));
    }

    seriesBarData.add(charts.Series(
      data: sales,
      domainFn: (Sales sales, _) => sales.saleyear,
      measureFn: (Sales sales, _) => int.parse(sales.saleval),
      //colorFn: (Sales sales, _) => charts.ColorUtil.fromDartColor(Color(int.parse(sales.salelabel))),
      id: 'Performance',
      //labelAccessorFn: (Sales row,_)=>"${row.saleyear}",
    ));
    setState(() {});
  }

  @override
  void initState() {
    super.initState();
    seriesBarData = List<charts.Series<Sales, String>>();
    _generateData();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Colors.cyan,
        title: Text('flutter charts'),
      ),
      body: Column(
        children: [
          Text(
            'Frame per Second',
            style: TextStyle(fontSize: 24.0, fontWeight: FontWeight.bold),
          ),
          SizedBox(
            height: 10.0,
          ),
          if (seriesBarData.length > 0)
            Expanded(
              child: charts.BarChart(
                seriesBarData,
                animate: true,
                animationDuration: Duration(seconds: 5),
                domainAxis: new charts.OrdinalAxisSpec(
                  viewport: new charts.OrdinalViewport('AePS', 9),
                ),





                behaviors: [
                  new charts.ChartTitle('Time,seconds',

                      // titleStyleSpec: chartsCommon.TextStyleSpec(fontSize: 11),
                      titleOutsideJustification:
                          charts.OutsideJustification.middleDrawArea),
                  new charts.ChartTitle('Number of Frames',
                      behaviorPosition: charts.BehaviorPosition.start,
                      // titleStyleSpec: chartsCommon.TextStyleSpec(fontSize: 11),
                      titleOutsideJustification:
                          charts.OutsideJustification.middleDrawArea),
                  new charts.DatumLegend(),

                ],
              ),
            )
          else
            Container(),
        ],
      ),
    );
  }
}

class Sales {
  String saleyear;
  String saleval;
  String salelabel;

  Sales(this.saleyear, this.saleval, this.salelabel);

  Sales.fromJson(Map<String, dynamic> json) {
    saleyear = json['saleyear'];
    saleval = json['saleval'];
    salelabel = json['salelabel'];
  }
}
这是我的代码,我可以在其中显示Json文件中的X轴和Y轴数据

    [
  {
    "saleyear": "2015",
    "saleval": "10",
    "salelabel": "first"
  },
  {
    "saleyear": "2016",
    "saleval": "30",
    "salelabel": "second"
  },
  {
    "saleyear": "2017",
    "saleval": "40",
    "salelabel": "third"
  },
  {
    "saleyear": "2018",
    "saleval": "10",
    "salelabel": "fourth"
  }
]
import 'package:flutter/material.dart';
import 'package:charts_flutter/flutter.dart' as charts;
import 'dart:convert';

class HomePage extends StatefulWidget {
  final Widget child;

  HomePage({Key key, this.child}) : super(key: key);

  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  List<charts.Series<Sales, String>> seriesBarData;

  _generateData() async {
    final load =
        await DefaultAssetBundle.of(context).loadString("asset/data.json");
    var decoded = json.decode(load);
    List<Sales> sales = [];
    for (var item in decoded) {
      sales.add(Sales.fromJson(item));
    }

    seriesBarData.add(charts.Series(
      data: sales,
      domainFn: (Sales sales, _) => sales.saleyear,
      measureFn: (Sales sales, _) => int.parse(sales.saleval),
      //colorFn: (Sales sales, _) => charts.ColorUtil.fromDartColor(Color(int.parse(sales.salelabel))),
      id: 'Performance',
      //labelAccessorFn: (Sales row,_)=>"${row.saleyear}",
    ));
    setState(() {});
  }

  @override
  void initState() {
    super.initState();
    seriesBarData = List<charts.Series<Sales, String>>();
    _generateData();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Colors.cyan,
        title: Text('flutter charts'),
      ),
      body: Column(
        children: [
          Text(
            'Frame per Second',
            style: TextStyle(fontSize: 24.0, fontWeight: FontWeight.bold),
          ),
          SizedBox(
            height: 10.0,
          ),
          if (seriesBarData.length > 0)
            Expanded(
              child: charts.BarChart(
                seriesBarData,
                animate: true,
                animationDuration: Duration(seconds: 5),
                domainAxis: new charts.OrdinalAxisSpec(
                  viewport: new charts.OrdinalViewport('AePS', 9),
                ),





                behaviors: [
                  new charts.ChartTitle('Time,seconds',

                      // titleStyleSpec: chartsCommon.TextStyleSpec(fontSize: 11),
                      titleOutsideJustification:
                          charts.OutsideJustification.middleDrawArea),
                  new charts.ChartTitle('Number of Frames',
                      behaviorPosition: charts.BehaviorPosition.start,
                      // titleStyleSpec: chartsCommon.TextStyleSpec(fontSize: 11),
                      titleOutsideJustification:
                          charts.OutsideJustification.middleDrawArea),
                  new charts.DatumLegend(),

                ],
              ),
            )
          else
            Container(),
        ],
      ),
    );
  }
}

class Sales {
  String saleyear;
  String saleval;
  String salelabel;

  Sales(this.saleyear, this.saleval, this.salelabel);

  Sales.fromJson(Map<String, dynamic> json) {
    saleyear = json['saleyear'];
    saleval = json['saleval'];
    salelabel = json['salelabel'];
  }
}
导入“包装:颤振/材料.省道”;
以图表形式导入“包:图表\颤振/颤振.省道”;
导入“dart:convert”;
类主页扩展了StatefulWidget{
最后一个孩子;
主页({Key-Key,this.child}):超级(Key:Key);
_HomePageState createState()=>\u HomePageState();
}
类_HomePageState扩展状态{
列表系列数据;
_generateData()异步{
最终荷载=
等待DefaultAssetBundle.of(context.loadString(“asset/data.json”);
var decoded=json.decode(加载);
上市销售额=[];
for(已解码的var项){
sales.add(sales.fromJson(item));
}
seriesBarData.add(charts.Series(
数据:销售额,
domainFn:(Sales-Sales,)=>Sales.saleyear,
measureFn:(Sales-Sales,)=>int.parse(Sales.saleval),
//colorFn:(Sales-Sales,)=>charts.ColorUtil.fromDartColor(Color(int.parse(Sales.salelabel)),
id:“性能”,
//labelAccessorFn:(销售行,)=>“${row.saleyear}”,
));
setState((){});
}
@凌驾
void initState(){
super.initState();
seriesBarData=List();
_生成数据();
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
背景颜色:Colors.cyan,
标题:文本(“颤振图”),
),
正文:专栏(
儿童:[
正文(
“每秒帧数”,
样式:TextStyle(fontSize:24.0,fontWeight:fontWeight.bold),
),
大小盒子(
身高:10.0,
),
如果(seriesBarData.length>0)
扩大(
孩子:图表。条形图(
seriesBarData,
动画:对,
动画持续时间:持续时间(秒数:5),
domainAxis:新图表(
视口:新图表。有序视口端口('AePS',9),
),
行为:[
新图表。图表标题('时间,秒',
//titleStyleSpec:chartsCommon.TextStyleSpec(fontSize:11),
标题外部理由:
图表。外部对齐。中间绘图区域),
新图表。图表标题('帧数',
behaviorPosition:charts.behaviorPosition.start,
//titleStyleSpec:chartsCommon.TextStyleSpec(fontSize:11),
标题外部理由:
图表。外部对齐。中间绘图区域),
新图表。DatumLegend(),
],
),
)
其他的
容器(),
],
),
);
}
}
班级销售{
一年一次;
字符串saleval;
字符串标签;
销售(this.saleyear、this.saleval、this.salelabel);
Sales.fromJson(映射json){
saleyear=json['saleyear'];
saleval=json['saleval'];
salelabel=json['salelabel'];
}
}
但在这里,我使用硬编码数据在X轴和Y轴上显示标签,使用行为,但我不知道如何设置标签,以便直接显示来自本地json文件或后端的数据