Flutter 未处理的异常:类型'_内部链接dhashmap<;字符串,动态>';不是类型为';地图<;num,dynamic>';

Flutter 未处理的异常:类型'_内部链接dhashmap<;字符串,动态>';不是类型为';地图<;num,dynamic>';,flutter,Flutter,我正试图在flatter中显示本地JSON文件中的折线图。这是我的JSON文件 [ { "time": "20", "distance": "10" }, { "time": "25", "distance": "30" } ] 这是我从asset中的文件中获取Json数据并在dart中解码和映射的代码,但它显示了一些关于映射的错误 import 'package:flutter/material.dart'; import 'package

我正试图在flatter中显示本地JSON文件中的折线图。这是我的JSON文件

[
  {
    "time": "20",
    "distance": "10"

  },
  {
    "time": "25",
    "distance": "30"

  }
]
这是我从asset中的文件中获取Json数据并在dart中解码和映射的代码,但它显示了一些关于映射的错误

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<Calculation, int>> seriesBarData;

  _generateData() async {
    final load =
        await DefaultAssetBundle.of(context).loadString("asset/data.json");

    var decoded = json.decode(load);
    List<Calculation> chartdata = [];
    for (var item in decoded) {
      chartdata.add(Calculation.fromJson(item));
    }

    seriesBarData.add(charts.Series(
      data: chartdata,
      domainFn: (Calculation chartdata, _) => chartdata.time,
      measureFn: (Calculation chartdata, _) => chartdata.distance,
      id: 'Performance',
    ));
    setState(() {});
  }

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

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

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

class Calculation {
  int time;
  int distance;

  Calculation(this.time, this.distance);

  Calculation.fromJson(Map<int, dynamic> json) {
    time = json['time'];
    distance = json['distance'];
  }
}
导入“包装:颤振/材料.省道”;
以图表形式导入“包:图表\颤振/颤振.省道”;
导入“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项){
chartdata.add(Calculation.fromJson(item));
}
seriesBarData.add(charts.Series(
数据:图表数据,
domainFn:(计算chartdata,)=>chartdata.time,
measureFn:(计算图表数据,)=>chartdata.distance,
id:“性能”,
));
setState((){});
}
@凌驾
void initState(){
super.initState();
seriesBarData=List();
_生成数据();
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
背景颜色:Colors.cyan,
标题:中心(子项:文本(“颤振图”),
),
正文:专栏(
儿童:[
正文(
“到车道的距离”,
样式:TextStyle(fontSize:24.0,fontWeight:fontWeight.bold),
),
大小盒子(
身高:10.0,
),
如果(seriesBarData.length>0)
扩大(
子:charts.LineChart(
seriesBarData,
动画:对,
动画持续时间:持续时间(秒数:5),
domainAxis:新图表(
//视口:新图表。有序视口端口('AePS',9),
),
),
)
其他的
容器(),
],
),
);
}
}
阶级计算{
整数时间;
整数距离;
计算(这个时间,这个距离);
Calculation.fromJson(映射json){
time=json['time'];
距离=json['distance'];
}
}
);
我发现这个错误与JSON的映射有关,因为我对Flatter和JSON是新手,所以我不知道如何映射它并在代码中使用它

将您的
构造函数从JSON更改为

 Calculation.fromJson(Map<String, dynamic> json) {
    time = json['time'];
    distance = json['distance'];
  }
Calculation.fromJson(映射json){
time=json['time'];
距离=json['distance'];
}

另外,
time
distance
属性是
String

也尝试过,但它抛出了[ERROR:flatter/lib/ui/ui\u dart\u state.cc(166)]未处理的异常:类型“String”不是类型“int”的子类型将变量的数据类型更改为String,否则将其解析为intIt立即生效谢谢。我已经解析了字符串及其工作状态