Skip to content

Gauge breaking when range has a end smaller than 10 #290

@leragequit

Description

@leragequit

Describe the bug
When the RadialTrack has a end value smaller than 10, the range is not properly renderered and throws an exception

To Reproduce
`import 'package:flutter/material.dart';
import 'package:geekyants_flutter_gauges/geekyants_flutter_gauges.dart';

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

class MyApp extends StatelessWidget {
const MyApp({super.key});
@OverRide
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}

class MyHomePage extends StatelessWidget {
const MyHomePage({super.key, required this.title});
final String title;

@OverRide
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: RadialGauge(
track: RadialTrack(start: 0, end: 1),
needlePointer: [NeedlePointer(value: 0.1)],
),
),
);
}
}
`

Expected behavior
A gauge with a range from 0 to 1, with the needle at value 0.1. And no exception being thrown

Screenshots

Image

Desktop (please complete the following information):

  • OS: Windows 10

Additional context
`
════════ Exception caught by rendering library ═════════════════════════════════
The following assertion was thrown during paint():
Offset argument contained a NaN value.
'dart:ui/painting.dart':
Failed assertion: line 41 pos 10: ''

The relevant error-causing widget was:
RadialGaugeContainer RadialGaugeContainer:file:///C:/Users/theon/AppData/Local/Pub/Cache/hosted/pub.dev/geekyants_flutter_gauges-1.0.4/lib/src/radial_gauge/radial_gauge.dart:200:29

When the exception was thrown, this was the stack:
#2 _offsetIsValid (dart:ui/painting.dart:41:10)
painting.dart:41
#3 _NativeCanvas.drawLine (dart:ui/painting.dart:6713:12)
painting.dart:6713
#4 RenderRadialGaugeContainer.paintRulersAndLabels (package:geekyants_flutter_gauges/src/radial_gauge/radial_gauge_container_painter.dart:86:16)
radial_gauge_container_painter.dart:86
#5 RenderRadialGaugeContainer.paint (package:geekyants_flutter_gauges/src/radial_gauge/radial_gauge_container_painter.dart:221:5)
radial_gauge_container_painter.dart:221
#6 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3423:7)
object.dart:3423
#7 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
object.dart:261
#8 RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:3367:15)
box.dart:3367
#9 RenderRadialGauge.paint (package:geekyants_flutter_gauges/src/radial_gauge/radial_gauge_painter.dart:309:5)
radial_gauge_painter.dart:309
#10 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3423:7)
object.dart:3423
#11 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
object.dart:261
#12 RenderShiftedBox.paint (package:flutter/src/rendering/shifted_box.dart:81:15)
shifted_box.dart:81
#13 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3423:7)
object.dart:3423
#14 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
object.dart:261
#15 RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:3367:15)
box.dart:3367
#16 RenderCustomMultiChildLayoutBox.paint (package:flutter/src/rendering/custom_layout.dart:425:5)
custom_layout.dart:425
#17 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3423:7)
object.dart:3423
#18 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
object.dart:261
#19 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
#20 _RenderInkFeatures.paint (package:flutter/src/material/material.dart:634:11)
material.dart:634
#21 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3423:7)
object.dart:3423
#22 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
object.dart:261
#23 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
#24 RenderPhysicalModel.paint. (package:flutter/src/rendering/proxy_box.dart:2184:15)
proxy_box.dart:2184
#25 PaintingContext.pushClipRRect (package:flutter/src/rendering/object.dart:609:14)
object.dart:609
#26 RenderPhysicalModel.paint (package:flutter/src/rendering/proxy_box.dart:2171:21)
proxy_box.dart:2171
#27 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3423:7)
object.dart:3423
#28 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
object.dart:261
#29 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
#30 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3423:7)
object.dart:3423
#31 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
object.dart:261
#32 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
#33 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3423:7)
object.dart:3423
#34 PaintingContext._repaintCompositedChild (package:flutter/src/rendering/object.dart:176:11)
object.dart:176
#35 PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart:121:5)
object.dart:121
#36 PaintingContext._compositeChild (package:flutter/src/rendering/object.dart:272:7)
object.dart:272
#37 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:253:7)
object.dart:253
#38 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
#39 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3423:7)
object.dart:3423
#40 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
object.dart:261
#41 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
#42 _ZoomExitTransitionPainter.paint (package:flutter/src/material/page_transitions_theme.dart:1457:21)
page_transitions_theme.dart:1457
#43 _RenderSnapshotWidget.paint (package:flutter/src/widgets/snapshot_widget.dart:337:15)
snapshot_widget.dart:337
#44 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3423:7)
object.dart:3423
#45 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
object.dart:261
#46 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
#47 _ZoomEnterTransitionPainter.paint (package:flutter/src/material/page_transitions_theme.dart:1362:21)
page_transitions_theme.dart:1362
#48 _RenderSnapshotWidget.paint (package:flutter/src/widgets/snapshot_widget.dart:337:15)
snapshot_widget.dart:337
#49 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3423:7)
object.dart:3423
#50 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
object.dart:261
#51 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
#52 _ZoomExitTransitionPainter.paint (package:flutter/src/material/page_transitions_theme.dart:1457:21)
page_transitions_theme.dart:1457
#53 _RenderSnapshotWidget.paint (package:flutter/src/widgets/snapshot_widget.dart:337:15)
snapshot_widget.dart:337
#54 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3423:7)
object.dart:3423
#55 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
object.dart:261
#56 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
#57 _ZoomEnterTransitionPainter.paint (package:flutter/src/material/page_transitions_theme.dart:1362:21)
page_transitions_theme.dart:1362
#58 _RenderSnapshotWidget.paint (package:flutter/src/widgets/snapshot_widget.dart:337:15)
snapshot_widget.dart:337
#59 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3423:7)
object.dart:3423
#60 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
object.dart:261
#61 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
#62 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3423:7)
object.dart:3423
#63 PaintingContext._repaintCompositedChild (package:flutter/src/rendering/object.dart:176:11)
object.dart:176
#64 PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart:121:5)
object.dart:121
#65 PaintingContext._compositeChild (package:flutter/src/rendering/object.dart:272:7)
object.dart:272
#66 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:253:7)
object.dart:253
#67 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
#68 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3423:7)
object.dart:3423
#69 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
object.dart:261
#70 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
#71 RenderOffstage.paint (package:flutter/src/rendering/proxy_box.dart:3868:11)
proxy_box.dart:3868
#72 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3423:7)
object.dart:3423
#73 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
object.dart:261
#74 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
#75 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3423:7)
object.dart:3423
#76 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
object.dart:261
#77 _RenderTheaterMixin.paint (package:flutter/src/widgets/overlay.dart:1120:15)
overlay.dart:1120
#78 _RenderTheater.paint (package:flutter/src/widgets/overlay.dart:1477:13)
overlay.dart:1477
#79 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3423:7)
object.dart:3423
#80 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
object.dart:261
#81 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
#82 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3423:7)
object.dart:3423
#83 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
object.dart:261
#84 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
#85 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3423:7)
object.dart:3423
#86 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
object.dart:261
#87 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
#88 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3423:7)
object.dart:3423
#89 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
object.dart:261
#90 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
#91 RenderCustomPaint.paint (package:flutter/src/rendering/custom_paint.dart:644:11)
custom_paint.dart:644
#92 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3423:7)
object.dart:3423
#93 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
object.dart:261
#94 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
#95 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3423:7)
object.dart:3423
#96 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
object.dart:261
#97 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
#98 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3423:7)
object.dart:3423
#99 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
object.dart:261
#100 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
#101 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3423:7)
object.dart:3423
#102 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
object.dart:261
#103 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
#104 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3423:7)
object.dart:3423
#105 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
object.dart:261
#106 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
#107 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3423:7)
object.dart:3423
#108 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
object.dart:261
#109 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:140:13)
proxy_box.dart:140
#110 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3423:7)
object.dart:3423
#111 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:261:13)
object.dart:261
#112 RenderView.paint (package:flutter/src/rendering/view.dart:322:15)
view.dart:322
#113 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3423:7)
object.dart:3423
#114 PaintingContext._repaintCompositedChild (package:flutter/src/rendering/object.dart:176:11)
object.dart:176
#115 PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart:121:5)
object.dart:121
#116 PipelineOwner.flushPaint (package:flutter/src/rendering/object.dart:1309:31)
object.dart:1309
#117 PipelineOwner.flushPaint (package:flutter/src/rendering/object.dart:1319:15)
object.dart:1319
#118 RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:631:23)
binding.dart:631
#119 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:1261:13)
binding.dart:1261
#120 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:495:5)
binding.dart:495
#121 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1434:15)
binding.dart:1434
#122 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1347:9)
binding.dart:1347
#123 SchedulerBinding.scheduleWarmUpFrame. (package:flutter/src/scheduler/binding.dart:1057:9)
binding.dart:1057
#124 PlatformDispatcher.scheduleWarmUpFrame. (dart:ui/platform_dispatcher.dart:886:16)
platform_dispatcher.dart:886
#128 _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:193:12)
isolate_patch.dart:193
(elided 5 frames from class _AssertionError, class _Timer, and dart:async-patch)

The following RenderObject was being processed when the exception was fired: RenderRadialGaugeContainer#8bafe relayoutBoundary=up3
parentData: offset=Offset(632.0, 340.5); id=null (can use size)
constraints: BoxConstraints(0.0<=w<=1264.0, 0.0<=h<=681.0)
size: Size(1264.0, 681.0)
RenderObject: RenderRadialGaugeContainer#8bafe relayoutBoundary=up3
parentData: offset=Offset(632.0, 340.5); id=null (can use size)
constraints: BoxConstraints(0.0<=w<=1264.0, 0.0<=h<=681.0)
size: Size(1264.0, 681.0)
`

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions