Unverified Commit 76de30ed authored by Jose Alba's avatar Jose Alba Committed by GitHub

Updated Slider test (#58630)

parent d9653445
...@@ -1290,7 +1290,9 @@ class _RenderSlider extends RenderBox with RelayoutWhenSystemFontsChangeMixin { ...@@ -1290,7 +1290,9 @@ class _RenderSlider extends RenderBox with RelayoutWhenSystemFontsChangeMixin {
} }
} }
void _handleDragStart(DragStartDetails details) => _startInteraction(details.globalPosition); void _handleDragStart(DragStartDetails details) {
_startInteraction(details.globalPosition);
}
void _handleDragUpdate(DragUpdateDetails details) { void _handleDragUpdate(DragUpdateDetails details) {
if (!_state.mounted) { if (!_state.mounted) {
...@@ -1311,11 +1313,17 @@ class _RenderSlider extends RenderBox with RelayoutWhenSystemFontsChangeMixin { ...@@ -1311,11 +1313,17 @@ class _RenderSlider extends RenderBox with RelayoutWhenSystemFontsChangeMixin {
} }
} }
void _handleDragEnd(DragEndDetails details) => _endInteraction(); void _handleDragEnd(DragEndDetails details) {
_endInteraction();
}
void _handleTapDown(TapDownDetails details) => _startInteraction(details.globalPosition); void _handleTapDown(TapDownDetails details) {
_startInteraction(details.globalPosition);
}
void _handleTapUp(TapUpDetails details) => _endInteraction(); void _handleTapUp(TapUpDetails details) {
_endInteraction();
}
@override @override
bool hitTestSelf(Offset position) => true; bool hitTestSelf(Offset position) => true;
......
...@@ -1319,7 +1319,7 @@ void main() { ...@@ -1319,7 +1319,7 @@ void main() {
await tester.pumpWidget(buildApp(divisions: 3)); await tester.pumpWidget(buildApp(divisions: 3));
final RenderBox valueIndicatorBox = tester.firstRenderObject(find.byType(Overlay)); final RenderBox valueIndicatorBox = tester.renderObject(find.byType(Overlay));
final Offset topRight = tester.getTopRight(find.byType(RangeSlider)).translate(-24, 0); final Offset topRight = tester.getTopRight(find.byType(RangeSlider)).translate(-24, 0);
final TestGesture gesture = await tester.startGesture(topRight); final TestGesture gesture = await tester.startGesture(topRight);
...@@ -1330,18 +1330,16 @@ void main() { ...@@ -1330,18 +1330,16 @@ void main() {
valueIndicatorBox, valueIndicatorBox,
paints paints
..path(color: sliderTheme.valueIndicatorColor) ..path(color: sliderTheme.valueIndicatorColor)
..path(color: sliderTheme.valueIndicatorColor), ..paragraph()
); );
await gesture.up(); await gesture.up();
// Wait for value indicator animation to finish. // Wait for value indicator animation to finish.
await tester.pumpAndSettle(); await tester.pumpAndSettle();
}); });
testWidgets('Range Slider removes value indicator from overlay if Slider gets disposed without value indicator animation completing.', (WidgetTester tester) async { testWidgets('Range Slider removes value indicator from overlay if Slider gets disposed without value indicator animation completing.', (WidgetTester tester) async {
final ThemeData theme = _buildTheme();
final SliderThemeData sliderTheme = theme.sliderTheme;
RangeValues values = const RangeValues(0.5, 0.75); RangeValues values = const RangeValues(0.5, 0.75);
const Color fillColor = Color(0xf55f5f5f);
Widget buildApp({ Widget buildApp({
Color activeColor, Color activeColor,
...@@ -1353,23 +1351,23 @@ void main() { ...@@ -1353,23 +1351,23 @@ void main() {
values = newValues; values = newValues;
}; };
return MaterialApp( return MaterialApp(
home: Directionality( home: Scaffold(
textDirection: TextDirection.ltr, // The builder is used to pass the context from the MaterialApp widget
child: Material( // to the [Navigator]. This context is required in order for the
child: Navigator(onGenerateRoute: (RouteSettings settings) { // Navigator to work.
return MaterialPageRoute<void>(builder: (BuildContext context) { body: Builder(
builder: (BuildContext context) {
return Column( return Column(
children: <Widget>[ children: <Widget>[
Theme( RangeSlider(
data: theme,
child: RangeSlider(
values: values, values: values,
labels: RangeLabels(values.start.toStringAsFixed(2), labels: RangeLabels(
values.end.toStringAsFixed(2)), values.start.toStringAsFixed(2),
values.end.toStringAsFixed(2),
),
divisions: divisions, divisions: divisions,
onChanged: onChanged, onChanged: onChanged,
), ),
),
RaisedButton( RaisedButton(
child: const Text('Next'), child: const Text('Next'),
onPressed: () { onPressed: () {
...@@ -1378,7 +1376,7 @@ void main() { ...@@ -1378,7 +1376,7 @@ void main() {
builder: (BuildContext context) { builder: (BuildContext context) {
return RaisedButton( return RaisedButton(
child: const Text('Inner page'), child: const Text('Inner page'),
onPressed: () => Navigator.of(context).pop(), onPressed: () { Navigator.of(context).pop(); },
); );
}, },
), ),
...@@ -1387,8 +1385,7 @@ void main() { ...@@ -1387,8 +1385,7 @@ void main() {
), ),
], ],
); );
}); },
}),
), ),
), ),
); );
...@@ -1396,24 +1393,29 @@ void main() { ...@@ -1396,24 +1393,29 @@ void main() {
await tester.pumpWidget(buildApp(divisions: 3)); await tester.pumpWidget(buildApp(divisions: 3));
/// The value indicator is added to the overlay when it is clicked or dragged. final RenderObject valueIndicatorBox = tester.renderObject(find.byType(Overlay));
/// Because both of these gestures are occurring then it adds same value indicator
/// twice into the overlay.
final RenderBox valueIndicatorBox = tester.firstRenderObject(find.byType(Overlay));
final Offset topRight = tester.getTopRight(find.byType(RangeSlider)).translate(-24, 0); final Offset topRight = tester.getTopRight(find.byType(RangeSlider)).translate(-24, 0);
final TestGesture gesture = await tester.startGesture(topRight); final TestGesture gesture = await tester.startGesture(topRight);
// Wait for value indicator animation to finish. // Wait for value indicator animation to finish.
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(find.byType(RangeSlider), isNotNull);
expect( expect(
valueIndicatorBox, valueIndicatorBox,
paints paints
..rrect(color: sliderTheme.inactiveTrackColor) // Represents the raised button wth next text.
..rect(color: sliderTheme.activeTrackColor) ..path(color: Colors.black)
..rrect(color: sliderTheme.inactiveTrackColor), ..paragraph()
// Represents the range slider.
..path(color: fillColor)
..paragraph()
..path(color: fillColor)
..paragraph(),
); );
// Represents the Raised Button and Range Slider.
expect(valueIndicatorBox, paintsExactlyCountTimes(#drawPath, 3));
expect(valueIndicatorBox, paintsExactlyCountTimes(#drawParagraph, 3));
await tester.tap(find.text('Next')); await tester.tap(find.text('Next'));
await tester.pumpAndSettle(); await tester.pumpAndSettle();
...@@ -1422,12 +1424,17 @@ void main() { ...@@ -1422,12 +1424,17 @@ void main() {
valueIndicatorBox, valueIndicatorBox,
isNot( isNot(
paints paints
..rrect(color: sliderTheme.inactiveTrackColor) ..path(color: fillColor)
..rect(color: sliderTheme.activeTrackColor) ..paragraph()
..rrect(color: sliderTheme.inactiveTrackColor) ..path(color: fillColor)
..paragraph(),
), ),
); );
// Represents the raised button with inner page text.
expect(valueIndicatorBox, paintsExactlyCountTimes(#drawPath, 1));
expect(valueIndicatorBox, paintsExactlyCountTimes(#drawParagraph, 1));
// Don't stop holding the value indicator. // Don't stop holding the value indicator.
await gesture.up(); await gesture.up();
await tester.pumpAndSettle(); await tester.pumpAndSettle();
...@@ -1548,7 +1555,7 @@ void main() { ...@@ -1548,7 +1555,7 @@ void main() {
), ),
); );
final RenderBox valueIndicatorBox = tester.firstRenderObject(find.byType(Overlay)); final RenderBox valueIndicatorBox = tester.renderObject(find.byType(Overlay));
// Get the bounds of the track by finding the slider edges and translating // Get the bounds of the track by finding the slider edges and translating
// inwards by the overlay radius. // inwards by the overlay radius.
...@@ -1572,8 +1579,7 @@ void main() { ...@@ -1572,8 +1579,7 @@ void main() {
valueIndicatorBox, valueIndicatorBox,
paints paints
..path(color: sliderTheme.valueIndicatorColor) ..path(color: sliderTheme.valueIndicatorColor)
..path(color: sliderTheme.overlappingShapeStrokeColor) ..paragraph()
..path(color: sliderTheme.valueIndicatorColor),
); );
await gesture.up(); await gesture.up();
...@@ -1624,7 +1630,7 @@ void main() { ...@@ -1624,7 +1630,7 @@ void main() {
), ),
); );
final RenderBox valueIndicatorBox = tester.firstRenderObject(find.byType(Overlay)); final RenderBox valueIndicatorBox = tester.renderObject(find.byType(Overlay));
// Get the bounds of the track by finding the slider edges and translating // Get the bounds of the track by finding the slider edges and translating
// inwards by the overlay radius. // inwards by the overlay radius.
...@@ -1648,8 +1654,7 @@ void main() { ...@@ -1648,8 +1654,7 @@ void main() {
valueIndicatorBox, valueIndicatorBox,
paints paints
..path(color: sliderTheme.valueIndicatorColor) ..path(color: sliderTheme.valueIndicatorColor)
..path(color: sliderTheme.overlappingShapeStrokeColor) ..paragraph()
..path(color: sliderTheme.valueIndicatorColor),
); );
await gesture.up(); await gesture.up();
......
...@@ -653,7 +653,7 @@ void main() { ...@@ -653,7 +653,7 @@ void main() {
await tester.pumpWidget(buildApp()); await tester.pumpWidget(buildApp());
final MaterialInkController material = Material.of(tester.element(find.byType(Slider))); final MaterialInkController material = Material.of(tester.element(find.byType(Slider)));
final RenderBox valueIndicatorBox = tester.firstRenderObject(find.byType(Overlay)); final RenderBox valueIndicatorBox = tester.renderObject(find.byType(Overlay));
// Check default theme for enabled widget. // Check default theme for enabled widget.
expect(material, paints..rrect(color: sliderTheme.activeTrackColor)..rrect(color: sliderTheme.inactiveTrackColor)); expect(material, paints..rrect(color: sliderTheme.activeTrackColor)..rrect(color: sliderTheme.inactiveTrackColor));
...@@ -769,16 +769,8 @@ void main() { ...@@ -769,16 +769,8 @@ void main() {
expect( expect(
valueIndicatorBox, valueIndicatorBox,
paints paints
..rrect(color: sliderTheme.activeTrackColor) ..path(color: sliderTheme.valueIndicatorColor)
..rrect(color: sliderTheme.inactiveTrackColor) ..paragraph(),
..circle(color: sliderTheme.overlayColor)
..circle(color: sliderTheme.activeTickMarkColor)
..circle(color: sliderTheme.activeTickMarkColor)
..circle(color: sliderTheme.inactiveTickMarkColor)
..circle(color: sliderTheme.inactiveTickMarkColor)
..shadow(color: Colors.black)
..circle(color: sliderTheme.thumbColor)
..path(color: sliderTheme.valueIndicatorColor),
); );
await gesture.up(); await gesture.up();
// Wait for value indicator animation to finish. // Wait for value indicator animation to finish.
...@@ -1037,7 +1029,7 @@ void main() { ...@@ -1037,7 +1029,7 @@ void main() {
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect( expect(
tester.firstRenderObject(find.byType(Overlay)), tester.renderObject(find.byType(Overlay)),
paints paints
..path( ..path(
includes: const <Offset>[ includes: const <Offset>[
...@@ -1047,7 +1039,8 @@ void main() { ...@@ -1047,7 +1039,8 @@ void main() {
Offset(-216.0, -16.0), Offset(-216.0, -16.0),
], ],
color: const Color(0xf55f5f5f), color: const Color(0xf55f5f5f),
), )
..paragraph(),
); );
await gesture.up(); await gesture.up();
...@@ -1059,7 +1052,7 @@ void main() { ...@@ -1059,7 +1052,7 @@ void main() {
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect( expect(
tester.firstRenderObject(find.byType(Overlay)), tester.renderObject(find.byType(Overlay)),
paints paints
..path( ..path(
includes: const <Offset>[ includes: const <Offset>[
...@@ -1069,7 +1062,8 @@ void main() { ...@@ -1069,7 +1062,8 @@ void main() {
Offset(-216.0, -16.0), Offset(-216.0, -16.0),
], ],
color: const Color(0xf55f5f5f), color: const Color(0xf55f5f5f),
), )
..paragraph(),
); );
await gesture.up(); await gesture.up();
...@@ -1085,7 +1079,7 @@ void main() { ...@@ -1085,7 +1079,7 @@ void main() {
gesture = await tester.startGesture(center); gesture = await tester.startGesture(center);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(tester.firstRenderObject(find.byType(Overlay)), expect(tester.renderObject(find.byType(Overlay)),
paints paints
..path( ..path(
includes: const <Offset>[ includes: const <Offset>[
...@@ -1095,7 +1089,8 @@ void main() { ...@@ -1095,7 +1089,8 @@ void main() {
Offset(-216.0, -16.0), Offset(-216.0, -16.0),
], ],
color: const Color(0xf55f5f5f), color: const Color(0xf55f5f5f),
), )
..paragraph(),
); );
await gesture.up(); await gesture.up();
...@@ -1111,7 +1106,7 @@ void main() { ...@@ -1111,7 +1106,7 @@ void main() {
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect( expect(
tester.firstRenderObject(find.byType(Overlay)), tester.renderObject(find.byType(Overlay)),
paints paints
..path( ..path(
includes: const <Offset>[ includes: const <Offset>[
...@@ -1121,7 +1116,8 @@ void main() { ...@@ -1121,7 +1116,8 @@ void main() {
Offset(-216.0, -16.0), Offset(-216.0, -16.0),
], ],
color: const Color(0xf55f5f5f), color: const Color(0xf55f5f5f),
), )
..paragraph(),
); );
await gesture.up(); await gesture.up();
...@@ -1906,12 +1902,12 @@ void main() { ...@@ -1906,12 +1902,12 @@ void main() {
await tester.pumpAndSettle(); await tester.pumpAndSettle();
final RenderBox valueIndicatorBox = tester.firstRenderObject(find.byType(Overlay)); final RenderBox valueIndicatorBox = tester.renderObject(find.byType(Overlay));
expect( expect(
valueIndicatorBox, valueIndicatorBox,
isVisible isVisible
? (paints..path(color: theme.valueIndicatorColor)) ? (paints..path(color: theme.valueIndicatorColor)..paragraph())
: isNot(paints..path(color: theme.valueIndicatorColor)), : isNot(paints..path(color: theme.valueIndicatorColor)..paragraph()),
); );
await gesture.up(); await gesture.up();
} }
...@@ -1989,6 +1985,7 @@ void main() { ...@@ -1989,6 +1985,7 @@ void main() {
testWidgets('Slider removes value indicator from overlay if Slider gets disposed without value indicator animation completing.', (WidgetTester tester) async { testWidgets('Slider removes value indicator from overlay if Slider gets disposed without value indicator animation completing.', (WidgetTester tester) async {
final Key sliderKey = UniqueKey(); final Key sliderKey = UniqueKey();
const Color fillColor = Color(0xf55f5f5f);
double value = 0.0; double value = 0.0;
Widget buildApp({ Widget buildApp({
...@@ -1998,11 +1995,12 @@ void main() { ...@@ -1998,11 +1995,12 @@ void main() {
bool enabled = true, bool enabled = true,
}) { }) {
return MaterialApp( return MaterialApp(
home: Directionality( home: Scaffold(
textDirection: TextDirection.ltr, body: Builder(
child: Material( // The builder is used to pass the context from the MaterialApp widget
child: Navigator(onGenerateRoute: (RouteSettings settings) { // to the [Navigator]. This context is required in order for the
return MaterialPageRoute<void>(builder: (BuildContext context) { // Navigator to work.
builder: (BuildContext context) {
return Column( return Column(
children: <Widget>[ children: <Widget>[
Slider( Slider(
...@@ -2024,7 +2022,7 @@ void main() { ...@@ -2024,7 +2022,7 @@ void main() {
builder: (BuildContext context) { builder: (BuildContext context) {
return RaisedButton( return RaisedButton(
child: const Text('Inner page'), child: const Text('Inner page'),
onPressed: () => Navigator.of(context).pop(), onPressed: () { Navigator.of(context).pop(); },
); );
}, },
), ),
...@@ -2033,8 +2031,7 @@ void main() { ...@@ -2033,8 +2031,7 @@ void main() {
), ),
], ],
); );
}); },
}),
), ),
), ),
); );
...@@ -2042,10 +2039,7 @@ void main() { ...@@ -2042,10 +2039,7 @@ void main() {
await tester.pumpWidget(buildApp(divisions: 3)); await tester.pumpWidget(buildApp(divisions: 3));
/// The value indicator is added to the overlay when it is clicked or dragged. final RenderObject valueIndicatorBox = tester.renderObject(find.byType(Overlay));
/// Because both of these gestures are occurring then it adds same value indicator
/// twice into the overlay.
final RenderBox valueIndicatorBox = tester.firstRenderObject(find.byType(Overlay));
final Offset topRight = tester.getTopRight(find.byType(Slider)).translate(-24, 0); final Offset topRight = tester.getTopRight(find.byType(Slider)).translate(-24, 0);
final TestGesture gesture = await tester.startGesture(topRight); final TestGesture gesture = await tester.startGesture(topRight);
// Wait for value indicator animation to finish. // Wait for value indicator animation to finish.
...@@ -2055,10 +2049,17 @@ void main() { ...@@ -2055,10 +2049,17 @@ void main() {
expect( expect(
valueIndicatorBox, valueIndicatorBox,
paints paints
..rrect(color: const Color(0xff2196f3)) // Active track. // Represents the raised button with text, next.
..rrect(color: const Color(0x3d2196f3)), // Inactive track. ..path(color: Colors.black)
..paragraph()
// Represents the Slider.
..path(color: fillColor)
..paragraph()
); );
expect(valueIndicatorBox, paintsExactlyCountTimes(#drawPath, 2));
expect(valueIndicatorBox, paintsExactlyCountTimes(#drawParagraph, 2));
await tester.tap(find.text('Next')); await tester.tap(find.text('Next'));
await tester.pumpAndSettle(); await tester.pumpAndSettle();
...@@ -2067,11 +2068,15 @@ void main() { ...@@ -2067,11 +2068,15 @@ void main() {
valueIndicatorBox, valueIndicatorBox,
isNot( isNot(
paints paints
..rrect(color: const Color(0xff2196f3)) // Active track. ..path(color: fillColor)
..rrect(color: const Color(0x3d2196f3)) // Inactive track. ..paragraph(),
), ),
); );
// Represents the RaisedButton with inner Text, inner page.
expect(valueIndicatorBox, paintsExactlyCountTimes(#drawPath, 1));
expect(valueIndicatorBox, paintsExactlyCountTimes(#drawParagraph, 1));
// Don't stop holding the value indicator. // Don't stop holding the value indicator.
await gesture.up(); await gesture.up();
await tester.pumpAndSettle(); await tester.pumpAndSettle();
......
...@@ -401,7 +401,7 @@ void main() { ...@@ -401,7 +401,7 @@ void main() {
await tester.pumpWidget(buildApp('1')); await tester.pumpWidget(buildApp('1'));
final RenderBox valueIndicatorBox = tester.firstRenderObject(find.byType(Overlay)); final RenderBox valueIndicatorBox = tester.renderObject(find.byType(Overlay));
Offset center = tester.getCenter(find.byType(Slider)); Offset center = tester.getCenter(find.byType(Slider));
TestGesture gesture = await tester.startGesture(center); TestGesture gesture = await tester.startGesture(center);
...@@ -578,7 +578,7 @@ void main() { ...@@ -578,7 +578,7 @@ void main() {
await tester.pumpWidget(buildApp('1')); await tester.pumpWidget(buildApp('1'));
final RenderBox valueIndicatorBox = tester.firstRenderObject(find.byType(Overlay)); final RenderBox valueIndicatorBox = tester.renderObject(find.byType(Overlay));
Offset center = tester.getCenter(find.byType(Slider)); Offset center = tester.getCenter(find.byType(Slider));
TestGesture gesture = await tester.startGesture(center); TestGesture gesture = await tester.startGesture(center);
...@@ -989,7 +989,7 @@ void main() { ...@@ -989,7 +989,7 @@ void main() {
)); ));
final MaterialInkController material = Material.of(tester.element(find.byType(Slider))); final MaterialInkController material = Material.of(tester.element(find.byType(Slider)));
final RenderBox valueIndicatorBox = tester.firstRenderObject(find.byType(Overlay)); final RenderBox valueIndicatorBox = tester.renderObject(find.byType(Overlay));
// Tap the center of the track and wait for animations to finish. // Tap the center of the track and wait for animations to finish.
final Offset center = tester.getCenter(find.byType(Slider)); final Offset center = tester.getCenter(find.byType(Slider));
...@@ -1020,7 +1020,7 @@ void main() { ...@@ -1020,7 +1020,7 @@ void main() {
)); ));
final MaterialInkController material = Material.of(tester.element(find.byType(Slider))); final MaterialInkController material = Material.of(tester.element(find.byType(Slider)));
final RenderBox valueIndicatorBox = tester.firstRenderObject(find.byType(Overlay)); final RenderBox valueIndicatorBox = tester.renderObject(find.byType(Overlay));
// Tap the center of the track to kick off the animation of the value indicator. // Tap the center of the track to kick off the animation of the value indicator.
final Offset center = tester.getCenter(find.byType(Slider)); final Offset center = tester.getCenter(find.byType(Slider));
...@@ -1053,7 +1053,7 @@ void main() { ...@@ -1053,7 +1053,7 @@ void main() {
divisions: 4, divisions: 4,
)); ));
final RenderBox valueIndicatorBox = tester.firstRenderObject(find.byType(Overlay)); final RenderBox valueIndicatorBox = tester.renderObject(find.byType(Overlay));
// Tap the center of the track to kick off the animation of the value indicator. // Tap the center of the track to kick off the animation of the value indicator.
final Offset center = tester.getCenter(find.byType(Slider)); final Offset center = tester.getCenter(find.byType(Slider));
...@@ -1084,7 +1084,7 @@ void main() { ...@@ -1084,7 +1084,7 @@ void main() {
await tester.pumpWidget(_buildRangeApp(sliderTheme)); await tester.pumpWidget(_buildRangeApp(sliderTheme));
final RenderBox valueIndicatorBox = tester.firstRenderObject(find.byType(Overlay)); final RenderBox valueIndicatorBox = tester.renderObject(find.byType(Overlay));
final Offset center = tester.getCenter(find.byType(RangeSlider)); final Offset center = tester.getCenter(find.byType(RangeSlider));
final TestGesture gesture = await tester.startGesture(center); final TestGesture gesture = await tester.startGesture(center);
...@@ -1131,7 +1131,7 @@ void main() { ...@@ -1131,7 +1131,7 @@ void main() {
)); ));
// final RenderBox sliderBox = tester.firstRenderObject<RenderBox>(find.byType(RangeSlider)); // final RenderBox sliderBox = tester.firstRenderObject<RenderBox>(find.byType(RangeSlider));
final RenderBox valueIndicatorBox = tester.firstRenderObject(find.byType(Overlay)); final RenderBox valueIndicatorBox = tester.renderObject(find.byType(Overlay));
// Tap the center of the track to kick off the animation of the value indicator. // Tap the center of the track to kick off the animation of the value indicator.
final Offset center = tester.getCenter(find.byType(RangeSlider)); final Offset center = tester.getCenter(find.byType(RangeSlider));
...@@ -1162,7 +1162,7 @@ void main() { ...@@ -1162,7 +1162,7 @@ void main() {
divisions: 4, divisions: 4,
)); ));
final RenderBox valueIndicatorBox = tester.firstRenderObject(find.byType(Overlay)); final RenderBox valueIndicatorBox = tester.renderObject(find.byType(Overlay));
// Tap the center of the track to kick off the animation of the value indicator. // Tap the center of the track to kick off the animation of the value indicator.
final Offset center = tester.getCenter(find.byType(RangeSlider)); final Offset center = tester.getCenter(find.byType(RangeSlider));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment