google / charts

https://pub.dev/packages/charts_flutter
Apache License 2.0
2.8k stars 1.2k forks source link

Example of donut not be working #746

Open edsonsmartcon opened 2 years ago

edsonsmartcon commented 2 years ago

Error:

Restarted application in 773ms.

════════ Exception caught by widgets library ═══════════════════════════════════
The following _TypeError was thrown building RawGestureDetector(state: RawGestureDetectorState#54c96(gestures: [tap])):
type 'PieChart<dynamic>' is not a subtype of type 'BaseChart<Object>' of 'chart'

The relevant error-causing widget was
GestureDetector
../…/src/chart_gesture_detector.dart:65
When the exception was thrown, this was the stack
#0      BaseArcRenderer.onAttach (package:charts_common/src/chart/pie/base_arc_renderer.dart)
package:charts_common/…/pie/base_arc_renderer.dart:1
#1      BaseChart.addSeriesRenderer
package:charts_common/…/common/base_chart.dart:222
#2      BaseChart.defaultRenderer=
package:charts_common/…/common/base_chart.dart:206
#3      BaseChart.updateCommonChart
package:charts_flutter/src/base_chart.dart:100
#4      ChartContainerRenderObject.reconfigure
package:charts_flutter/src/chart_container.dart:99
#5      ChartContainer.createRenderObject
package:charts_flutter/src/chart_container.dart:61
#6      RenderObjectElement.mount
package:flutter/…/widgets/framework.dart:5624
#7      SingleChildRenderObjectElement.mount
package:flutter/…/widgets/framework.dart:6283
...     Normal element mounting (27 frames)
#34     Element.inflateWidget
package:flutter/…/widgets/framework.dart:3790
#35     MultiChildRenderObjectElement.inflateWidget
package:flutter/…/widgets/framework.dart:6422
#36     MultiChildRenderObjectElement.mount
package:flutter/…/widgets/framework.dart:6433
...     Normal element mounting (39 frames)
#75     Element.inflateWidget
package:flutter/…/widgets/framework.dart:3790
#76     MultiChildRenderObjectElement.inflateWidget
package:flutter/…/widgets/framework.dart:6422
#77     MultiChildRenderObjectElement.mount
package:flutter/…/widgets/framework.dart:6433
...     Normal element mounting (114 frames)
#191    Element.inflateWidget
package:flutter/…/widgets/framework.dart:3790
#192    MultiChildRenderObjectElement.inflateWidget
package:flutter/…/widgets/framework.dart:6422
#193    MultiChildRenderObjectElement.mount
package:flutter/…/widgets/framework.dart:6433
...     Normal element mounting (175 frames)
#368    Element.inflateWidget
package:flutter/…/widgets/framework.dart:3790
#369    MultiChildRenderObjectElement.inflateWidget
package:flutter/…/widgets/framework.dart:6422
#370    MultiChildRenderObjectElement.mount
package:flutter/…/widgets/framework.dart:6433
...     Normal element mounting (362 frames)
#732    Element.inflateWidget
package:flutter/…/widgets/framework.dart:3790
#733    Element.updateChild
package:flutter/…/widgets/framework.dart:3540
#734    RenderObjectToWidgetElement._rebuild
package:flutter/…/widgets/binding.dart:1198
#735    RenderObjectToWidgetElement.mount
package:flutter/…/widgets/binding.dart:1167
#736    RenderObjectToWidgetAdapter.attachToRenderTree.<anonymous closure>
package:flutter/…/widgets/binding.dart:1112
#737    BuildOwner.buildScope
package:flutter/…/widgets/framework.dart:2600
#738    RenderObjectToWidgetAdapter.attachToRenderTree
package:flutter/…/widgets/binding.dart:1111
#739    WidgetsBinding.attachRootWidget
package:flutter/…/widgets/binding.dart:944
#740    WidgetsBinding.scheduleAttachRootWidget.<anonymous closure>
package:flutter/…/widgets/binding.dart:924
(elided 11 frames from class _RawReceivePortImpl, class _Timer, dart:async, and dart:async-patch)
═════════════════════════════════════

════════ Exception caught by rendering library ════════════════════════════════
Each child must be laid out exactly once.
The relevant error-causing widget was
CustomMultiChildLayout
../…/src/base_chart_state.dart:141

════════ Exception caught by scheduler library ═════════════════════════════════
Updated layout information required for RenderErrorBox#9da73 NEEDS-LAYOUT NEEDS-PAINT to calculate semantics.
'package:flutter/src/rendering/object.dart':
package:flutter/…/rendering/object.dart:1
Failed assertion: line 2789 pos 12: '!_needsLayout'

════════ Exception caught by scheduler library ═════════════════════════════════
'package:flutter/src/widgets/binding.dart': Failed assertion: line 857 pos 14: '!_firstFrameCompleter.isCompleted': is not true.
package:flutter/…/widgets/binding.dart:857

flutter doctor:

[✓] Flutter (Channel stable, 2.10.2, on macOS 11.4 20F71 darwin-x64, locale pt-BR)
    • Flutter version 2.10.2 at /Users/edsonm/development/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 097d3313d8 (13 days ago), 2022-02-18 19:33:08 -0600
    • Engine revision a83ed0e5e3
    • Dart version 2.16.1
    • DevTools version 2.9.2

[✓] Android toolchain - develop for Android devices (Android SDK version 32.1.0-rc1)
    • Android SDK at /Users/edsonm/Library/Android/sdk
    • Platform android-32, build-tools 32.1.0-rc1
    • ANDROID_HOME = /Users/edsonm/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.11+0-b60-7590822)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 13.2.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • CocoaPods version 1.11.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2021.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.11+0-b60-7590822)

[✓] VS Code (version 1.64.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.36.0

[✓] VS Code (version 1.63.2)
    • VS Code at /Users/edsonm/Downloads/Visual Studio Code.app/Contents
    • Flutter extension version 3.36.0

[✓] Connected device (3 available)
    • iPhone 11 (mobile) • 6D2F079F-2131-4998-9035-F117BC61DB98 • ios            • com.apple.CoreSimulator.SimRuntime.iOS-15-2 (simulator)
    • macOS (desktop)    • macos                                • darwin-x64     • macOS 11.4 20F71 darwin-x64
    • Chrome (web)       • chrome                               • web-javascript • Google Chrome 98.0.4758.109

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!

import 'package:charts_flutter/flutter.dart' as charts;
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      debugShowCheckedModeBanner: false,
      home: HomePage(),
    );
  }
}

class HomePage extends StatelessWidget {
  const HomePage({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: SizedBox(
          width: 300,
          height: 300,
          child: DonutPieChart.withSampleData(),
        ),
      ),
    );
  }
}

/// Donut chart example. This is a simple pie chart with a hole in the middle.

class DonutPieChart extends StatelessWidget {
  final List<charts.Series> seriesList;
  final bool animate;

  const DonutPieChart(this.seriesList, {required this.animate});

  /// Creates a [PieChart] with sample data and no transition.
  factory DonutPieChart.withSampleData() {
    return DonutPieChart(
      _createSampleData(),
      // Disable animations for image tests.
      animate: false,
    );
  }

  @override
  Widget build(BuildContext context) {
    return charts.PieChart(
      seriesList,
      animate: animate,
      // Configure the width of the pie slices to 60px. The remaining space in
      // the chart will be left as a hole in the center.

      animationDuration: const Duration(milliseconds: 500),
      defaultRenderer: charts.ArcRendererConfig<Object>(
        arcWidth: 60,
        arcRendererDecorators: [charts.ArcLabelDecorator()],
      ),
    );
  }

  /// Create one series with sample hard coded data.
  static List<charts.Series<LinearSales, int>> _createSampleData() {
    final data = [
      LinearSales(0, 100),
      LinearSales(1, 75),
      LinearSales(2, 25),
      LinearSales(3, 5),
    ];

    return [
      charts.Series<LinearSales, int>(
        id: 'Sales',
        domainFn: (LinearSales sales, _) => sales.year,
        measureFn: (LinearSales sales, _) => sales.sales,
        data: data,
      )
    ];
  }
}

/// Sample linear data type.
class LinearSales {
  final int year;
  final int sales;

  LinearSales(this.year, this.sales);
}
yuenzp commented 2 years ago

Specify a type to the pie chart, it will solve the problem.

new charts.PieChart<int>()