Flutter 未处理的异常:类型'_内部链接dhashmap<;字符串,动态>';不是类型为';地图<;num,dynamic>';
我正试图在flatter中显示本地JSON文件中的折线图。这是我的JSON文件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
[
{
"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立即生效谢谢。我已经解析了字符串及其工作状态