Flutter-Neumorphic icon indicating copy to clipboard operation
Flutter-Neumorphic copied to clipboard

NeumorphicSlider Rect argument contained a NaN value

Open mayouf opened this issue 3 years ago β€’ 1 comments

Hi,

I have AudioPlay screen using a NeumorphicSlider like below:

I have a slider widget called PositionSeekWidget. Inside I implement a Neuromorphic slider.

see here the code for the PositionSeekWidget
class PositionSeekWidget extends StatefulWidget {
  final Duration currentPosition;
  final Duration duration;
  final Function(Duration) seekTo;

  const PositionSeekWidget({
    @required this.currentPosition,
    @required this.duration,
    @required this.seekTo,
  });

  @override
  _PositionSeekWidgetState createState() => _PositionSeekWidgetState();
}

class _PositionSeekWidgetState extends State<PositionSeekWidget> {
  Duration _visibleValue;
  bool listenOnlyUserInterraction = false;
  double get percent => widget.duration.inMilliseconds == 0.0 ? 0.0 : _visibleValue.inMilliseconds / widget.duration.inMilliseconds;

  @override
  void initState() {
    super.initState();
    _visibleValue = widget.currentPosition;
  }

  @override
  void didUpdateWidget(PositionSeekWidget oldWidget) {
    super.didUpdateWidget(oldWidget);
    if (!listenOnlyUserInterraction) {
      _visibleValue = widget.currentPosition;
    }
  }

  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.all(8.0),
      child: Column(
        children: [
          Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Expanded(
                child: NeumorphicSlider(
                  // sliderHeight: 50,
                  min: 0.0,
                  max: widget.duration.inMilliseconds.toDouble(),
                  value: percent * widget.duration.inMilliseconds.toDouble(),
                  style: SliderStyle(
                    // variant: Colors.grey,
                    // accent: Colors.grey[500],
                    variant: Color(0xffEFAB63),
                    accent: Color(0xffEB7E59),
                    lightSource: LightSource.bottomRight,
                    depth: 2.0,
                    disableDepth: false,
                  ),
                  onChangeEnd: (newValue) {
                    setState(() {
                      listenOnlyUserInterraction = false;
                      widget.seekTo(_visibleValue);
                    });
                  },
                  onChangeStart: (_) {
                    setState(() {
                      listenOnlyUserInterraction = true;
                    });
                  },
                  onChanged: (newValue) {
                    setState(() {
                      final to = Duration(milliseconds: newValue.floor());
                      _visibleValue = to;
                    });
                  },
                ),
              ),
            ],
          ),
          Padding(
            padding: EdgeInsets.only(
              left: MediaQuery.of(context).size.width * (16.0 / 360),
              right: MediaQuery.of(context).size.width * (16.0 / 360),
              top: MediaQuery.of(context).size.width * (8.0 / 360),
              bottom: MediaQuery.of(context).size.width * (5.0 / 360),
            ),
            child: Row(
              mainAxisSize: MainAxisSize.max,
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: [
                Text(
                  durationToString(widget.currentPosition),
                  style: TextStyle(
                    color: Colors.white,
                    fontWeight: FontWeight.w400,
                    fontFamily: "Roboto",
                    fontStyle: FontStyle.normal,
                    fontSize: 12 * MediaQuery.of(context).textScaleFactor,
                  ),
                ),
                Text(
                  durationToString(widget.duration),
                  style: TextStyle(
                    color: Colors.white,
                    // const Color(0xff9e9696),
                    fontWeight: FontWeight.w400,
                    fontFamily: "Roboto",
                    fontStyle: FontStyle.normal,
                    fontSize: 12 * MediaQuery.of(context).textScaleFactor,
                  ),
                ),
              ],
            ),
          ),
        ],
      ),
    );
  }
}
See here is how the slider is called on the screen:
StreamBuilder(
       stream: assetsAudioPlayer.realtimePlayingInfos,
       builder: (context, snapshot) {
           if (!snapshot.hasData) {
               return SizedBox();
          }
          final RealtimePlayingInfos infos = snapshot.data;
          return PositionSeekWidget(
                 currentPosition: infos.currentPosition,
                 duration: infos.duration,
                 seekTo: (to) {
                        assetsAudioPlayer.seek(to);
                },
         );
}),

When the audio stop playing, I have this exception that I could not pinpoint:

[ +142 ms] I/flutter (24593): ══║ EXCEPTION CAUGHT BY RENDERING LIBRARY β•žβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•
[        ] I/flutter (24593): The following assertion was thrown during paint():
[        ] I/flutter (24593): Rect argument contained a NaN value.
[        ] I/flutter (24593): 'dart:ui/painting.dart':
[        ] I/flutter (24593): Failed assertion: line 40 pos 10: '<optimized out>'
[        ] I/flutter (24593): 
[        ] I/flutter (24593): The relevant error-causing widget was:
[   +1 ms] I/flutter (24593):   NeumorphicSlider
[        ] I/flutter (24593):   file:///C:/Users/bob/marley/music/album/lib/screens/player_screen/PositionSeekWidget.dart:48:24
[        ] I/flutter (24593): 
[   +4 ms] I/flutter (24593): When the exception was thrown, this was the stack:
[        ] I/flutter (24593): #2      _rectIsValid (dart:ui/painting.dart:40:10)
[        ] I/flutter (24593): #3      Canvas.saveLayer (dart:ui/painting.dart:3984:14)
[        ] I/flutter (24593): #4      NeumorphicDecorationPainter._drawShadow (package:flutter_neumorphic/src/decoration/neumorphic_decoration_painter.dart:180:11)
[        ] I/flutter (24593): #5      NeumorphicDecorationPainter.paint (package:flutter_neumorphic/src/decoration/neumorphic_decoration_painter.dart:126:9)
[        ] I/flutter (24593): #6      RenderDecoratedBox.paint (package:flutter/src/rendering/proxy_box.dart:2146:17)
[        ] I/flutter (24593): #7      RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2322:7)
[        ] I/flutter (24593): #8      PaintingContext.paintChild (package:flutter/src/rendering/object.dart:189:13)
[        ] I/flutter (24593): #9      RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:142:15)
[        ] I/flutter (24593): #10     RenderDecoratedBox.paint (package:flutter/src/rendering/proxy_box.dart:2165:11)
[        ] I/flutter (24593): #11     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2322:7)
[        ] I/flutter (24593): #12     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:189:13)
[        ] I/flutter (24593): #13     RenderShiftedBox.paint (package:flutter/src/rendering/shifted_box.dart:72:15)
[        ] I/flutter (24593): #14     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2322:7)
[        ] I/flutter (24593): #15     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:189:13)
[        ] I/flutter (24593): #16     RenderShiftedBox.paint (package:flutter/src/rendering/shifted_box.dart:72:15)
[        ] I/flutter (24593): #17     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2322:7)
[        ] I/flutter (24593): #18     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:189:13)
[        ] I/flutter (24593): #19     RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:2805:15)
[        ] I/flutter (24593): #20     RenderStack.paintStack (package:flutter/src/rendering/stack.dart:629:5)
[        ] I/flutter (24593): #21     RenderStack.paint (package:flutter/src/rendering/stack.dart:639:7)
[        ] I/flutter (24593): #22     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2322:7)
[        ] I/flutter (24593): #23     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:189:13)
[        ] I/flutter (24593): #24     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:142:15)
[        ] I/flutter (24593): #25     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2322:7)
[        ] I/flutter (24593): #26     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:189:13)
[        ] I/flutter (24593): #27     RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:142:15)
[        ] I/flutter (24593): #28     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2322:7)
[        ] I/flutter (24593): #29     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:189:13)
[        ] I/flutter (24593): #30     _RenderLayoutBuilder.paint (package:flutter/src/widgets/layout_builder.dart:384:15)
[        ] I/flutter (24593): #31     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2322:7)
[        ] I/flutter (24593): #32     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:189:13)
[        ] I/flutter (24593): #33     RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:2805:15)
[        ] I/flutter (24593): #34     RenderFlex.paint (package:flutter/src/rendering/flex.dart:1079:7)
[   +1 ms] I/flutter (24593): #35     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2322:7)
[        ] I/flutter (24593): #36     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:189:13)
[        ] I/flutter (24593): #37     RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:2805:15)
[        ] I/flutter (24593): #38     RenderFlex.paint (package:flutter/src/rendering/flex.dart:1079:7)
[        ] I/flutter (24593): #39     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2322:7)
[        ] I/flutter (24593): #40     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:189:13)
[   +4 ms] I/flutter (24593): #41     RenderShiftedBox.paint (package:flutter/src/rendering/shifted_box.dart:72:15)
[        ] I/flutter (24593): #42     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2322:7)
[        ] I/flutter (24593): #43     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:189:13)
[        ] I/flutter (24593): #44     RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:2805:15)
[        ] I/flutter (24593): #45     RenderFlex.paint (package:flutter/src/rendering/flex.dart:1079:7)
[        ] I/flutter (24593): #46     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2322:7)
[        ] I/flutter (24593): #47     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:189:13)
[        ] I/flutter (24593): #48     _RenderSingleChildViewport.paint.paintContents (package:flutter/src/widgets/single_child_scroll_view.dart:596:17)
[   +1 ms] I/flutter (24593): #49     _RenderSingleChildViewport.paint (package:flutter/src/widgets/single_child_scroll_view.dart:604:22)
[        ] I/flutter (24593): #50     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2322:7)
[        ] I/flutter (24593): #51     PaintingContext._repaintCompositedChild (package:flutter/src/rendering/object.dart:140:11)
[        ] I/flutter (24593): #52     PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart:100:5)
[        ] I/flutter (24593): #53     PipelineOwner.flushPaint (package:flutter/src/rendering/object.dart:978:29)
[        ] I/flutter (24593): #54     RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:455:19)
[        ] I/flutter (24593): #55     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:874:13)
[        ] I/flutter (24593): #56     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
[        ] I/flutter (24593): #57     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1082:9)
[        ] I/flutter (24593): #61     _invoke (dart:ui/hooks.dart:161:10)
[        ] I/flutter (24593): #62     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:253:5)
[        ] I/flutter (24593): #63     _drawFrame (dart:ui/hooks.dart:120:31)
[        ] I/flutter (24593): (elided 5 frames from class _AssertionError and dart:async)
[        ] I/flutter (24593): 
[        ] I/flutter (24593): The following RenderObject was being processed when the exception was fired: RenderDecoratedBox#242ca relayoutBoundary=up23:
[        ] I/flutter (24593):   creator: DecoratedBox ← DecoratedBox ← Padding ← Container ← AnimatedContainer ← DefaultTextStyle ←
[        ] I/flutter (24593):     _NeumorphicContainer ← Neumorphic ← Align ← Stack ← Listener ← _GestureSemantics ← β‹―
[        ] I/flutter (24593):   parentData: <none> (can use size)
[        ] I/flutter (24593):   constraints: BoxConstraints(0.0<=w<=376.7, 0.0<=h<=Infinity)
[        ] I/flutter (24593):   size: Size(22.5, 22.5)
[        ] I/flutter (24593):   β”œβ”€decoration: NeumorphicDecoration
[        ] I/flutter (24593):   configuration: ImageConfiguration(bundle: PlatformAssetBundle#684a3(), devicePixelRatio: 2.8,
[        ] I/flutter (24593):     locale: en, textDirection: TextDirection.ltr, platform: android)
[        ] I/flutter (24593): This RenderObject had the following descendants (showing up to depth 5):
[        ] I/flutter (24593):     child: RenderPadding#b3afe relayoutBoundary=up24
[        ] I/flutter (24593):       child: RenderClipPath#8a3c4 relayoutBoundary=up25
[   +3 ms] I/flutter (24593):         child: RenderPadding#c7cce relayoutBoundary=up26
[        ] I/flutter (24593):           child: RenderConstrainedBox#7ba2b relayoutBoundary=up27

Any clue how to handle this ? or why this happen ?

mayouf avatar Apr 03 '21 16:04 mayouf

Hi, did you find the solution for the problem

Ali-Ghanme avatar Nov 27 '22 21:11 Ali-Ghanme