5
5
import 'dart:math' as math;
6
6
import 'dart:ui' show lerpDouble;
7
7
8
- import 'package:flutter/foundation.dart' show clampDouble ;
8
+ import 'package:flutter/foundation.dart' ;
9
9
import 'package:flutter/gestures.dart' ;
10
10
import 'package:flutter/rendering.dart' ;
11
+ import 'package:flutter/services.dart' ;
11
12
import 'package:flutter/widgets.dart' ;
12
13
13
14
import 'colors.dart' ;
@@ -294,6 +295,7 @@ class _CupertinoSliderRenderObjectWidget extends LeafRenderObjectWidget {
294
295
onChangeEnd: onChangeEnd,
295
296
vsync: vsync,
296
297
textDirection: Directionality .of (context),
298
+ cursor: kIsWeb ? SystemMouseCursors .click : MouseCursor .defer,
297
299
);
298
300
}
299
301
@@ -322,7 +324,7 @@ const Duration _kDiscreteTransitionDuration = Duration(milliseconds: 500);
322
324
323
325
const double _kAdjustmentUnit = 0.1 ; // Matches iOS implementation of material slider.
324
326
325
- class _RenderCupertinoSlider extends RenderConstrainedBox {
327
+ class _RenderCupertinoSlider extends RenderConstrainedBox implements MouseTrackerAnnotation {
326
328
_RenderCupertinoSlider ({
327
329
required double value,
328
330
int ? divisions,
@@ -334,8 +336,11 @@ class _RenderCupertinoSlider extends RenderConstrainedBox {
334
336
this .onChangeEnd,
335
337
required TickerProvider vsync,
336
338
required TextDirection textDirection,
339
+ MouseCursor cursor = MouseCursor .defer,
337
340
}) : assert (value != null && value >= 0.0 && value <= 1.0 ),
338
341
assert (textDirection != null ),
342
+ assert (cursor != null ),
343
+ _cursor = cursor,
339
344
_value = value,
340
345
_divisions = divisions,
341
346
_activeColor = activeColor,
@@ -584,4 +589,27 @@ class _RenderCupertinoSlider extends RenderConstrainedBox {
584
589
onChanged !(clampDouble (value - _semanticActionUnit, 0.0 , 1.0 ));
585
590
}
586
591
}
592
+
593
+ @override
594
+ MouseCursor get cursor => _cursor;
595
+ MouseCursor _cursor;
596
+ set cursor (MouseCursor value) {
597
+ if (_cursor != value) {
598
+ _cursor = value;
599
+ // A repaint is needed in order to trigger a device update of
600
+ // [MouseTracker] so that this new value can be found.
601
+ markNeedsPaint ();
602
+ }
603
+ }
604
+
605
+ @override
606
+ PointerEnterEventListener ? onEnter;
607
+
608
+ PointerHoverEventListener ? onHover;
609
+
610
+ @override
611
+ PointerExitEventListener ? onExit;
612
+
613
+ @override
614
+ bool get validForMouseTracker => false ;
587
615
}
0 commit comments