diff --git a/packages/flutter/lib/src/material/range_slider.dart b/packages/flutter/lib/src/material/range_slider.dart index e988450b933..5b6b6004506 100644 --- a/packages/flutter/lib/src/material/range_slider.dart +++ b/packages/flutter/lib/src/material/range_slider.dart @@ -337,6 +337,24 @@ class RangeSlider extends StatefulWidget { @override _RangeSliderState createState() => _RangeSliderState(); + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties.add(DoubleProperty('valueStart', values.start)); + properties.add(DoubleProperty('valueEnd', values.end)); + properties.add(ObjectFlagProperty>('onChanged', onChanged, ifNull: 'disabled')); + properties.add(ObjectFlagProperty>.has('onChangeStart', onChangeStart)); + properties.add(ObjectFlagProperty>.has('onChangeEnd', onChangeEnd)); + properties.add(DoubleProperty('min', min)); + properties.add(DoubleProperty('max', max)); + properties.add(IntProperty('divisions', divisions)); + properties.add(StringProperty('labelStart', labels?.start)); + properties.add(StringProperty('labelEnd', labels?.end)); + properties.add(ColorProperty('activeColor', activeColor)); + properties.add(ColorProperty('inactiveColor', inactiveColor)); + properties.add(ObjectFlagProperty>.has('semanticFormatterCallback', semanticFormatterCallback)); + } } class _RangeSliderState extends State with TickerProviderStateMixin { diff --git a/packages/flutter/test/material/range_slider_test.dart b/packages/flutter/test/material/range_slider_test.dart index f6d5424c0d6..0e570ca6b74 100644 --- a/packages/flutter/test/material/range_slider_test.dart +++ b/packages/flutter/test/material/range_slider_test.dart @@ -1533,5 +1533,40 @@ void main() { await gesture.up(); }); + + testWidgets('Range Slider implements debugFillProperties', (WidgetTester tester) async { + final DiagnosticPropertiesBuilder builder = DiagnosticPropertiesBuilder(); + + RangeSlider( + activeColor: Colors.blue, + divisions: 4, + inactiveColor: Colors.grey, + labels: const RangeLabels('lowerValue', 'upperValue'), + max: 100.0, + min: 0.0, + onChanged: null, + onChangeEnd: null, + onChangeStart: null, + semanticFormatterCallback: null, + values: const RangeValues(25.0, 75.0), + ).debugFillProperties(builder); + + final List description = builder.properties + .where((DiagnosticsNode node) => !node.isFiltered(DiagnosticLevel.info)) + .map((DiagnosticsNode node) => node.toString()).toList(); + + expect(description, [ + 'valueStart: 25.0', + 'valueEnd: 75.0', + 'disabled', + 'min: 0.0', + 'max: 100.0', + 'divisions: 4', + 'labelStart: "lowerValue"', + 'labelEnd: "upperValue"', + 'activeColor: MaterialColor(primary value: Color(0xff2196f3))', + 'inactiveColor: MaterialColor(primary value: Color(0xff9e9e9e))' + ]); + }); }