bdlukaa / bdlukaa/fluent_ui

`ProgressBar` throws error when the parent is too small

Open
#969 2 comments 0 reactions 0 assignees View on GitHub
bug
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.