`ProgressBar` throws error when the parent is too small
- Dominant language
- Dart
- Stars
- 3.5k
- Forks
- 506
- Avg merge
- 11d 2h
- Merged PRs (30d)
- 3
Description
When the ProgressBarWidget is used, bot no value is specified (so the loading animation is shown), i get the following error with fluent_ui 4.7.7. Because of the error the progress bar is not displayed. Using fluent 4.7.6 or specifying a value in 4.7.7 seems to work fine with no error thrown.
Dart: 3.1.5
Flutter: 3.13.9
```
======== Exception caught by rendering library =====================================================
The following assertion was thrown during paint():
'package:flutter/src/foundation/math.dart': Failed assertion: line 12 pos 10: 'min <= max && !max.isNaN && !min.isNaN': is not true.
The relevant error-causing widget was:
ProgressBar ProgressBar:file:[...]
When the exception was thrown, this was the stack:
2 clampDouble (package:flutter/src/foundation/math.dart:12:10)
3 OffsetExtension.clamp (package:fluent_ui/src/utils.dart:163:7)
4 _ProgressBarPainter.paint.drawLine (package:fluent_ui/src/controls/surfaces/progress_indicators.dart:183:17)
5 _ProgressBarPainter.paint (package:fluent_ui/src/controls/surfaces/progress_indicators.dart:199:5)
6 RenderCustomPaint._paintWithPainter (package:flutter/src/rendering/custom_paint.dart:573:13)
7 RenderCustomPaint.paint (package:flutter/src/rendering/custom_paint.dart:615:7)
8 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3155:7)
9 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:252:13)
10 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:129:13)
11 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3155:7)
12 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:252:13)
13 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:129:13)
14 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3155:7)
15 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:252:13)
16 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:129:13)
17 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3155:7)
18 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:252:13)
19 _RenderLayoutBuilder.paint (package:flutter/src/widgets/layout_builder.dart:338:15)
20 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3155:7)
21 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:252:13)
22 RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:2875:15)
23 RenderFlex.paint (package:flutter/src/rendering/flex.dart:1040:7)
24 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3155:7)
25 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:252:13)
26 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:129:13)
27 RenderTransform.paint (package:flutter/src/rendering/proxy_box.dart:2555:17)
28 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3155:7)
29 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:252:13)
30 RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:129:13)
31 RenderAnimatedOpacityMixin.paint (package:flutter/src/rendering/proxy_box.dart:1060:11)
32 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:3155:7)
33 PaintingContext._repaintCompositedChild (package:flutter/src/rendering/object.dart:168:11)
34 PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart:111:5)
35 PipelineOwner.flushPaint (package:flutter/src/rendering/object.dart:1144:31)
36 RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:496:19)
37 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:918:13)
38 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:360:5)
39 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1297:15)
40 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1227:9)
41 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1085:5)
42 _invoke (dart:ui/hooks.dart:170:13)
43 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:401:5)
44 _drawFrame (dart:ui/hooks.dart:140:31)
(elided 2 frames from class _AssertionError)
The following RenderObject was being processed when the exception was fired: RenderCustomPaint#14dfb
... parentData: (can use size)
... constraints: BoxConstraints(w=945.6, h=0.0)
... size: Size(945.6, 0.0)
... painter: _ProgressBarPainter#8b3d1()
RenderObject: RenderCustomPaint#14dfb
parentData: (can use size)
constraints: BoxConstraints(w=945.6, h=0.0)
size: Size(945.6, 0.0)
painter: _ProgressBarPainter#8b3d1()
```
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reproducing the issue with ProgressBarWidget without a value inside a parent whose height is zero or too small. Read src/controls/surfaces/progress_indicators.dart around _ProgressBarPainter.paint and src/utils.dart around OffsetExtension.clamp; done means the indeterminate ProgressBar paints without the clampDouble assertion under the reported constraints.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- dart
- Domain
- frontend
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 48/100