Skip to content

Range Slider: Rounding error causes values.end to exceed max #180984

@chris-prenissl

Description

@chris-prenissl

Steps to reproduce

  1. Start the example app from the issue with Emulator Medium_Phone Android 36.1 with Google Play in debug mode
  2. Slide the left thumb of the RangeSlider to the right till it overlaps with the right Thumb
  3. Slide the right thumb now

Expected results

values should always be in range with valid visuals

Actual results

  • Red Screen is shown

Code sample

Code sample
import 'package:flutter/material.dart';

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

class MainApp extends StatefulWidget {
  const MainApp({super.key});

  @override
  State<MainApp> createState() => _MainAppState();
}

class _MainAppState extends State<MainApp> {
  RangeValues _currentRangeValues = const RangeValues(0, 200);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center(
          child: RangeSlider(
            min: 0,
            max: 200,
            values: _currentRangeValues,
            onChanged: (RangeValues values) {
              setState(() {
                _currentRangeValues = values;
              });
            },
          ),
        ),
      ),
    );
  }
}

[range_slider_bug_github.zip](https://github.com/user-attachments/files/24620974/range_slider_bug_github.zip)

Screenshots or Video

Screenshots / Video demonstration Image

Logs

Logs
════════ Exception caught by widgets library ═══════════════════════════════════
The following assertion was thrown building MainApp(dirty, state: _MainAppState#db0da):
'package:flutter/src/material/range_slider.dart': Failed assertion: line 179 pos 15: 'values.end >= min && values.end <= max': is not true.

The relevant error-causing widget was:
    MainApp MainApp:file:///Users/christophprenissl/range_slider_bug/lib/main.dart:4:16

When the exception was thrown, this was the stack:
#2      new RangeSlider (package:flutter/src/material/range_slider.dart:179:15)
range_slider.dart:179
#3      _MainAppState.build (package:range_slider_bug/main.dart:22:18)
main.dart:22
#4      StatefulElement.build (package:flutter/src/widgets/framework.dart:5931:27)
framework.dart:5931
#5      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5817:15)
framework.dart:5817
#6      StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5982:11)
framework.dart:5982
#7      Element.rebuild (package:flutter/src/widgets/framework.dart:5529:7)
framework.dart:5529
#8      BuildScope._tryRebuild (package:flutter/src/widgets/framework.dart:2750:15)
framework.dart:2750
#9      BuildScope._flushDirtyElements (package:flutter/src/widgets/framework.dart:2807:11)
framework.dart:2807
#10     BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:3111:18)
framework.dart:3111
#11     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:1267:21)
binding.dart:1267
#12     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:495:5)
binding.dart:495
#13     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1430:15)
binding.dart:1430
#14     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1345:9)
binding.dart:1345
#15     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1198:5)
binding.dart:1198
#16     _invoke (dart:ui/hooks.dart:356:13)
hooks.dart:356
#17     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:444:5)
platform_dispatcher.dart:444
#18     _drawFrame (dart:ui/hooks.dart:328:31)
hooks.dart:328
(elided 2 frames from class _AssertionError)

Flutter Doctor output

Doctor output
[✓] Flutter (Channel master, 3.40.0-1.0.pre-573, on macOS 26.2 25C56 darwin-arm64, locale de-DE) [1.900ms]
    • Flutter version 3.40.0-1.0.pre-573 on channel master at /Users/christophprenissl/Projects/flutter/flutter
    • Upstream repository [email protected]:flutter/flutter.git
    • Framework revision 5e417dc812 (3 hours ago), 2026-01-14 15:58:57 +0100
    • Engine revision bc63dfe662
    • Dart version 3.12.0 (build 3.12.0-17.0.dev)
    • DevTools version 2.54.0
    • Feature flags: enable-web, enable-linux-desktop, enable-macos-desktop, enable-windows-desktop, enable-android, enable-ios, cli-animations, enable-native-assets, omit-legacy-version-file, enable-lldb-debugging, enable-uiscene-migration, enable-riscv64

[✓] Android toolchain - develop for Android devices (Android SDK version 36.0.0) [1.999ms]
    • Android SDK at /Users/christophprenissl/Library/Android/sdk
    • Emulator version 36.3.10.0 (build_id 14472402) (CL:N/A)
    • Platform android-36, build-tools 36.0.0
    • ANDROID_HOME = /Users/christophprenissl/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
      This is the JDK bundled with the latest Android Studio installation on this machine.
      To manually set the JDK path, use: `flutter config --jdk-dir="path/to/jdk"`.
    • Java version OpenJDK Runtime Environment (build 21.0.8+-14196175-b1038.72)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 26.2) [4,5s]
    • Xcode at /Applications/Xcode-26.2.0.app/Contents/Developer
    • Build 17C52
    • CocoaPods version 1.16.2

[✓] Chrome - develop for the web [6ms]
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Connected device (4 available) [6,7s]
    • sdk gphone64 arm64 (mobile) • emulator-5554             • android-arm64  • Android 16 (API 36) (emulator)
    • SnakePT (wireless) (mobile) • 00008150-000104890204401C • ios            • iOS 26.2 23C55
    • macOS (desktop)             • macos                     • darwin-arm64   • macOS 26.2 25C56 darwin-arm64
    • Chrome (web)                • chrome                    • web-javascript • Google Chrome 143.0.7499.193
    ! Error: Browsing on the local area network for SnakePT. Ensure the device is unlocked and attached with a cable or associated with the same local area network as this Mac.
      The device must be opted into Developer Mode to connect wirelessly. (code -27)

[✓] Network resources [250ms]
    • All expected network resources are available.

• No issues found!

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Important issues not at the top of the work lista: error messageError messages from the Flutter frameworkf: material designflutter/packages/flutter/material repository.frameworkflutter/packages/flutter repository. See also f: labels.team-frameworkOwned by Framework teamtriaged-frameworkTriaged by Framework teamwaiting for PR to land (fixed)A fix is in flight

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions