0
_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 studio 中收到的错误消息。我认为这与_generatePieChartSectionData函数有关,或者可能与StreamBuilder 有关

另外,请提供有关任何有助于我理解颤振错误消息的资源的建议

>/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
4

2 回答 2

3
 int len = recievedData.length();

而不是上面我应该使用

 int len = recievedData.length;

发生错误是因为 dart 将“receivedData.length”评估为整数 (int),您尝试将其作为函数执行。Dart 内部可以使用对象中定义的“call”方法来执行它,所以这就是为什么错误是这样的

于 2020-04-03T11:10:36.807 回答
0

如果您使用 api 并尝试不正确地序列化/反序列化 json,那么根据您的数据类型,我们也可能会遇到这些错误。

所以尝试为 json 生成正确的模型文件。

您可以使用此链接生成它们并使用适当的方法,如fromMap/fromJson 和 toMap/toJson(在上述站点中生成)来正确序列化/反序列化 json。

我确实遇到了同样的错误,在生成模型文件后,我能够克服它。

于 2021-06-30T17:13:04.947 回答