Class 'int' 没有实例方法 'call' ERROR FLUTTER
Class 'int' has no instance method 'call' ERROR FLUTTER
_generatePieChartSectionData(recievedData) {
print(recievedData);
int len = recievedData.length();
for (int i = 0; i < len; i++) {
_pieChartdata.add(charts.PieChartSectionData(
color: Color(int.parse(recievedData[i].color)),
title: recievedData[i].name,
value: double.parse(recievedData[i].value),
));
}
Widget _bodyBuild(context) {
return StreamBuilder<QuerySnapshot>(
stream: Firestore.instance.collection('pieChart').snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return LinearProgressIndicator();
} else {
List<ManHours> man = snapshot.data.documents
.map((documentSnapshot) => ManHours.from(documentSnapshot.data))
.toList();
return _buildPie(context, man);
}
},
);
}
Widget _buildPie(BuildContext context, List<ManHours> man) {
recievedData = man;
print('ghfghfghfhgfghfhgfhfghfghfgfhfh');
print(recievedData.toString());
_generatePieChartSectionData(recievedData);
print('kk');
return Center(
child: charts.PieChart(charts.PieChartData(
sections: _pieChartdata,
sectionsSpace: 5.0,
centerSpaceRadius: 40.0,
)),
);
}
这是我在 android 工作室收到的错误消息。我认为这与 _generatePieChartSectionData 函数有关,或者可能与 StreamBuilder
有关
此外,请提供有关任何有助于我理解 flutter 错误消息的资源的建议
>/flutter ( 8961): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY>╞═══════════════════════════════════════════════════════════
>I/flutter ( 8961): The following NoSuchMethodError was thrown building StreamBuilder<QuerySnapshot (dirty, state:
>I/flutter ( 8961): _StreamBuilderBaseState<QuerySnapshot, AsyncSnapshot<QuerySnapshot>>#19026): >I/flutter ( 8961): Class 'int' has no instance method 'call'.
>I/flutter ( 8961): Receiver: 6
>I/flutter ( 8961): Tried calling: call()
>I/flutter ( 8961):
>I/flutter ( 8961): The relevant error-causing widget was:
>I/flutter ( 8961): StreamBuilder<QuerySnapshot>
>I/flutter ( 8961): >file:///G:/FLUTTER_PROJECTS/charts_unergia/lib/activities/pieChartActivity.dart:40:12
int len = recievedData.length();
我应该使用
而不是上面的
int len = recievedData.length;
发生错误是因为 dart 将 "receivedData.length" 计算为一个整数 (int),您尝试将其作为函数执行。 Dart内部可以使用对象中定义的"call"方法来执行,所以才会出现这样的错误
如果您正在使用 api 并尝试不正确地 serialize/deserialize json,那么我们也可能会遇到这些错误,具体取决于您的数据类型。
因此请尝试为 json 生成正确的模型文件。
您可以使用 this link 生成它们并使用适当的方法,如 fromMap/fromJson 和 toMap/toJson(在上述站点中生成) 正确 serialize/desrialize json.
我确实遇到过同样的错误,在生成模型文件后,我能够克服它。
_generatePieChartSectionData(recievedData) {
print(recievedData);
int len = recievedData.length();
for (int i = 0; i < len; i++) {
_pieChartdata.add(charts.PieChartSectionData(
color: Color(int.parse(recievedData[i].color)),
title: recievedData[i].name,
value: double.parse(recievedData[i].value),
));
}
Widget _bodyBuild(context) {
return StreamBuilder<QuerySnapshot>(
stream: Firestore.instance.collection('pieChart').snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return LinearProgressIndicator();
} else {
List<ManHours> man = snapshot.data.documents
.map((documentSnapshot) => ManHours.from(documentSnapshot.data))
.toList();
return _buildPie(context, man);
}
},
);
}
Widget _buildPie(BuildContext context, List<ManHours> man) {
recievedData = man;
print('ghfghfghfhgfghfhgfhfghfghfgfhfh');
print(recievedData.toString());
_generatePieChartSectionData(recievedData);
print('kk');
return Center(
child: charts.PieChart(charts.PieChartData(
sections: _pieChartdata,
sectionsSpace: 5.0,
centerSpaceRadius: 40.0,
)),
);
}
这是我在 android 工作室收到的错误消息。我认为这与 _generatePieChartSectionData 函数有关,或者可能与 StreamBuilder
有关此外,请提供有关任何有助于我理解 flutter 错误消息的资源的建议
>/flutter ( 8961): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY>╞═══════════════════════════════════════════════════════════
>I/flutter ( 8961): The following NoSuchMethodError was thrown building StreamBuilder<QuerySnapshot (dirty, state:
>I/flutter ( 8961): _StreamBuilderBaseState<QuerySnapshot, AsyncSnapshot<QuerySnapshot>>#19026): >I/flutter ( 8961): Class 'int' has no instance method 'call'.
>I/flutter ( 8961): Receiver: 6
>I/flutter ( 8961): Tried calling: call()
>I/flutter ( 8961):
>I/flutter ( 8961): The relevant error-causing widget was:
>I/flutter ( 8961): StreamBuilder<QuerySnapshot>
>I/flutter ( 8961): >file:///G:/FLUTTER_PROJECTS/charts_unergia/lib/activities/pieChartActivity.dart:40:12
int len = recievedData.length();
我应该使用
而不是上面的 int len = recievedData.length;
发生错误是因为 dart 将 "receivedData.length" 计算为一个整数 (int),您尝试将其作为函数执行。 Dart内部可以使用对象中定义的"call"方法来执行,所以才会出现这样的错误
如果您正在使用 api 并尝试不正确地 serialize/deserialize json,那么我们也可能会遇到这些错误,具体取决于您的数据类型。
因此请尝试为 json 生成正确的模型文件。
您可以使用 this link 生成它们并使用适当的方法,如 fromMap/fromJson 和 toMap/toJson(在上述站点中生成) 正确 serialize/desrialize json.
我确实遇到过同样的错误,在生成模型文件后,我能够克服它。