Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TimeSeriesChart : PanAndZoomBehavior causing error #19301

Closed
rtolar opened this issue Jul 12, 2018 · 5 comments
Closed

TimeSeriesChart : PanAndZoomBehavior causing error #19301

rtolar opened this issue Jul 12, 2018 · 5 comments

Comments

@rtolar
Copy link

rtolar commented Jul 12, 2018

While attempting to figure out how to implement pan-and-zoom on a time series graph, I received the following error:

Performing hot reload...
I/flutter ( 7381): ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
I/flutter ( 7381): The following assertion was thrown during performLayout():
I/flutter ( 7381): type 'int' is not a subtype of type 'double'
I/flutter ( 7381): 
I/flutter ( 7381): Either the assertion indicates an error in the framework itself, or we should provide substantially
I/flutter ( 7381): more information in this error message to help you determine and fix the underlying cause.
I/flutter ( 7381): In either case, please report this assertion by filing a bug on GitHub:
I/flutter ( 7381):   https://github.com/flutter/flutter/issues/new
I/flutter ( 7381): 
I/flutter ( 7381): When the exception was thrown, this was the stack:
I/flutter ( 7381): #0      LinearScaleViewportSettings.updateViewportScaleFactor (package:charts_common/src/chart/cartesian/axis/linear/linear_scale_viewport.dart)
I/flutter ( 7381): #1      LinearScale._configureScale (package:charts_common/src/chart/cartesian/axis/linear/linear_scale.dart:219:23)
I/flutter ( 7381): #2      LinearScale.viewportDomain (package:charts_common/src/chart/cartesian/axis/linear/linear_scale.dart:145:5)
I/flutter ( 7381): #3      DateTimeScale.viewportDomain (package:charts_common/src/chart/cartesian/axis/time/date_time_scale.dart:84:34)
I/flutter ( 7381): #4      AutoAdjustingDateTimeTickProvider.getTicks (package:charts_common/src/chart/cartesian/axis/time/auto_adjusting_date_time_tick_provider.dart:117:28)
I/flutter ( 7381): #5      PanningTickProvider.getTicks (package:charts_common/src/chart/common/behavior/zoom/panning_tick_provider.dart:74:29)
I/flutter ( 7381): #6      Axis._updateProvidedTicks (package:charts_common/src/chart/cartesian/axis/axis.dart:196:35)
I/flutter ( 7381): #7      Axis._measureHorizontalAxis (package:charts_common/src/chart/cartesian/axis/axis.dart:360:5)
I/flutter ( 7381): #8      Axis.measure (package:charts_common/src/chart/cartesian/axis/axis.dart:347:11)
I/flutter ( 7381): #9      HorizontalMarginStrategy.measure.<anonymous closure> (package:charts_common/src/chart/layout/layout_margin_strategy.dart:198:21)
I/flutter ( 7381): #10     Iterable.forEach (dart:core/iterable.dart:281:30)
I/flutter ( 7381): #11     HorizontalMarginStrategy.measure (package:charts_common/src/chart/layout/layout_margin_strategy.dart:180:11)
I/flutter ( 7381): #12     LayoutManagerImpl._measure (package:charts_common/src/chart/layout/layout_manager_impl.dart:237:56)
I/flutter ( 7381): #13     LayoutManagerImpl.measure (package:charts_common/src/chart/layout/layout_manager_impl.dart:100:24)
I/flutter ( 7381): #14     BaseChart.measure (package:charts_common/src/chart/common/base_chart.dart:252:22)
I/flutter ( 7381): #15     ChartContainerRenderObject.performLayout (package:charts_flutter/src/chart_container.dart:129:12)
I/flutter ( 7381): #16     RenderObject.layout (package:flutter/src/rendering/object.dart:1570:7)
I/flutter ( 7381): #17     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 7381): #18     RenderObject.layout (package:flutter/src/rendering/object.dart:1570:7)
I/flutter ( 7381): #19     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 7381): #20     RenderObject.layout (package:flutter/src/rendering/object.dart:1570:7)
I/flutter ( 7381): #21     MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:141:11)
I/flutter ( 7381): #22     WidgetLayoutDelegate.performLayout (package:charts_flutter/src/widget_layout_delegate.dart:80:7)
I/flutter ( 7381): #23     MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:211:7)
I/flutter ( 7381): #24     RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:355:14)
I/flutter ( 7381): #25     RenderObject.layout (package:flutter/src/rendering/object.dart:1570:7)
I/flutter ( 7381): #26     MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:141:11)
I/flutter ( 7381): #27     _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:399:7)
I/flutter ( 7381): #28     MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:211:7)
I/flutter ( 7381): #29     RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:355:14)
I/flutter ( 7381): #30     RenderObject.layout (package:flutter/src/rendering/object.dart:1570:7)
I/flutter ( 7381): #31     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 7381): #32     RenderObject.layout (package:flutter/src/rendering/object.dart:1570:7)
I/flutter ( 7381): #33     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 7381): #34     _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1143:11)
I/flutter ( 7381): #35     RenderObject.layout (package:flutter/src/rendering/object.dart:1570:7)
I/flutter ( 7381): #36     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 7381): #37     RenderObject.layout (package:flutter/src/rendering/object.dart:1570:7)
I/flutter ( 7381): #38     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 7381): #39     RenderObject.layout (package:flutter/src/rendering/object.dart:1570:7)
I/flutter ( 7381): #40     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 7381): #41     RenderObject.layout (package:flutter/src/rendering/object.dart:1570:7)
I/flutter ( 7381): #42     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 7381): #43     RenderObject.layout (package:flutter/src/rendering/object.dart:1570:7)
I/flutter ( 7381): #44     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 7381): #45     RenderObject.layout (package:flutter/src/rendering/object.dart:1570:7)
I/flutter ( 7381): #46     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 7381): #47     RenderObject.layout (package:flutter/src/rendering/object.dart:1570:7)
I/flutter ( 7381): #48     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 7381): #49     RenderObject.layout (package:flutter/src/rendering/object.dart:1570:7)
I/flutter ( 7381): #50     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 7381): #51     RenderOffstage.performLayout (package:flutter/src/rendering/proxy_box.dart:2831:13)
I/flutter ( 7381): #52     RenderObject.layout (package:flutter/src/rendering/object.dart:1570:7)
I/flutter ( 7381): #53     RenderStack.performLayout (package:flutter/src/rendering/stack.dart:520:15)
I/flutter ( 7381): #54     RenderObject.layout (package:flutter/src/rendering/object.dart:1570:7)
I/flutter ( 7381): #55     __RenderTheatre&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 7381): #56     RenderObject.layout (package:flutter/src/rendering/object.dart:1570:7)
I/flutter ( 7381): #57     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 7381): #58     RenderObject.layout (package:flutter/src/rendering/object.dart:1570:7)
I/flutter ( 7381): #59     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 7381): #60     RenderObject.layout (package:flutter/src/rendering/object.dart:1570:7)
I/flutter ( 7381): #61     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 7381): #62     RenderObject.layout (package:flutter/src/rendering/object.dart:1570:7)
I/flutter ( 7381): #63     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 7381): #64     RenderObject.layout (package:flutter/src/rendering/object.dart:1570:7)
I/flutter ( 7381): #65     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:109:13)
I/flutter ( 7381): #66     RenderObject.layout (package:flutter/src/rendering/object.dart:1570:7)
I/flutter ( 7381): #67     RenderView.performLayout (package:flutter/src/rendering/view.dart:125:13)
I/flutter ( 7381): #68     RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:1445:7)
I/flutter ( 7381): #69     PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:709:18)
I/flutter ( 7381): #70     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:270:19)
I/flutter ( 7381): #71     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:627:13)
I/flutter ( 7381): #72     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:208:5)
I/flutter ( 7381): #73     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:990:15)
I/flutter ( 7381): #74     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:930:9)
I/flutter ( 7381): #75     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.scheduleWarmUpFrame.<anonymous closure> (package:flutter/src/scheduler/binding.dart:751:7)
I/flutter ( 7381): #77     _Timer._runTimers (dart:isolate/runtime/libtimer_impl.dart:382:19)
I/flutter ( 7381): #78     _Timer._handleMessage (dart:isolate/runtime/libtimer_impl.dart:416:5)
I/flutter ( 7381): #79     _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:165:12)
I/flutter ( 7381): (elided one frame from package dart:async)
I/flutter ( 7381): 
I/flutter ( 7381): The following RenderObject was being processed when the exception was fired:
I/flutter ( 7381):   ChartContainerRenderObject<DateTime>#1c86c NEEDS-LAYOUT NEEDS-PAINT
I/flutter ( 7381):   creator: ChartContainer<DateTime> ← Listener ← _GestureSemantics ← RawGestureDetector ←
I/flutter ( 7381):   GestureDetector ← LayoutId-[<chartContainer>] ← CustomMultiChildLayout ← TimeSeriesChart ←
I/flutter ( 7381):   SimpleTimeSeriesChart ← MediaQuery ← LayoutId-[<_ScaffoldSlot.body>] ← CustomMultiChildLayout ← ⋯
I/flutter ( 7381):   parentData: <none> (can use size)
I/flutter ( 7381):   constraints: BoxConstraints(w=411.4, h=603.4)
I/flutter ( 7381):   semantic boundary
I/flutter ( 7381):   size: Size(411.4, 603.4)
I/flutter ( 7381): This RenderObject has no descendants.
I/flutter ( 7381): ════════════════════════════════════════════════════════════════════════════════════════════════════
Reloaded 2 of 608 libraries in 1,518ms.

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

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

  //SimpleTimeSeriesChart(this.seriesList, {this.animate});
  SimpleTimeSeriesChart(this.seriesList, {this.animate});
  /// Creates a [TimeSeriesChart] with sample data and no transition.
  factory SimpleTimeSeriesChart.withSampleData() {
    return new SimpleTimeSeriesChart(
      _createSampleData(),
      // Disable animations for image tests.
      animate: true,
    );
  }


  @override
  Widget build(BuildContext context) {

    var c =  charts.TimeSeriesChart(
      seriesList,
      animate: animate,
      // Optionally pass in a [DateTimeFactory] used by the chart. The factory
      // should create the same type of [DateTime] as the data provided. If none
      // specified, the default creates local date time.
      dateTimeFactory: const charts.LocalDateTimeFactory(),
      //domainAxis: new charts.OrdinalAxisSpec(viewport: new charts.OrdinalViewport((new DateTime(2017, 9, 19)).toString(), 4)),
      domainAxis: new charts.DateTimeAxisSpec(viewport: new charts.DateTimeExtents(start: new DateTime(2017, 9, 19), end: new DateTime(2017, 9, 20))),
// *** LINE CAUSING THE ERROR BELOW ***
      behaviors: [new charts.PanAndZoomBehavior()],
    );


    return c;
  }

  /// Create one series with sample hard coded data.
  static List<charts.Series<XYValue, DateTime>> _createSampleData() {
    final data = [
      new XYValue(new DateTime(2017, 9, 19), 5),
      new XYValue(new DateTime(2017, 9, 26), 25),
      new XYValue(new DateTime(2017, 9, 28), 26),
      new XYValue(new DateTime(2017, 10, 3), 100),
      new XYValue(new DateTime(2017, 10, 10), 75),
    ];

    return [
      new charts.Series<XYValue, DateTime>(
        id: 'Sales',
        colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault,
        domainFn: (XYValue datapoints, _) => datapoints.time,
        measureFn: (XYValue datapoints, _) => datapoints.value,
        data: data,
        strokeWidthPxFn: (XYValue datapoints, _) => 5,
        //domainLowerBoundFn: (_, __) => new DateTime(2017, 8, 1),
        //domainUpperBoundFn: (_, __) => new DateTime(2017, 11, 1),

      )
    ];
  }
}

/// Sample time series data type.
class XYValue {
  final DateTime time;
  final int value;

  XYValue(this.time, this.value);
}
---------------------
@zoechi
Copy link
Contributor

zoechi commented Jul 12, 2018

I guess this should better be filed under https://github.com/google/charts/issues

@rtolar
Copy link
Author

rtolar commented Jul 12, 2018

The error message shown says to file the bug report here.

I/flutter ( 7381): Either the assertion indicates an error in the framework itself, or we should provide substantially
I/flutter ( 7381): more information in this error message to help you determine and fix the underlying cause.
I/flutter ( 7381): In either case, please report this assertion by filing a bug on GitHub:
I/flutter ( 7381):   https://github.com/flutter/flutter/issues/new

In other words, it is entirely possible that there is a bug in the charts library, or that I'm using the chart classes incorrectly. But, the error message from the base Flutter framework is so generic, I can't tell where the problem is.

@zoechi
Copy link
Contributor

zoechi commented Jul 12, 2018

There is an issue to get this text about the "error in the framework" removed when it's unlikely to be a framework error. I think this issue is such a case.

@rtolar
Copy link
Author

rtolar commented Jul 12, 2018

Opened issue : google/charts#73

@rtolar rtolar closed this as completed Jul 12, 2018
@github-actions
Copy link

github-actions bot commented Sep 2, 2021

This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of flutter doctor -v and a minimal reproduction of the issue.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Sep 2, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants