[Material] Fix TextDirection and selected thumb for RangeSliderThumbShape and RangeSliderValueIndicatorShape (#34501)

Expose the RangeSlider's TextDirection in the RangeSliderThumbShape's abstract paint() method, and ensure that start and end thumb are non-null when being passed to the thumb and value indicator shape paint methods.
diff --git a/packages/flutter/lib/src/material/range_slider.dart b/packages/flutter/lib/src/material/range_slider.dart
index 2ad954d..613602b 100644
--- a/packages/flutter/lib/src/material/range_slider.dart
+++ b/packages/flutter/lib/src/material/range_slider.dart
@@ -1229,6 +1229,7 @@
 
     final bool isLastThumbStart = _lastThumbSelection == Thumb.start;
     final Thumb bottomThumb = isLastThumbStart ? Thumb.end : Thumb.start;
+    final Thumb topThumb = isLastThumbStart ? Thumb.start : Thumb.end;
     final Offset bottomThumbCenter = isLastThumbStart ? endThumbCenter : startThumbCenter;
     final Offset topThumbCenter = isLastThumbStart ? startThumbCenter : endThumbCenter;
     final TextPainter bottomLabelPainter = isLastThumbStart ? _endLabelPainter : _startLabelPainter;
@@ -1262,7 +1263,7 @@
         parentBox: this,
         sliderTheme: _sliderTheme,
         textDirection: _textDirection,
-        thumb: _lastThumbSelection,
+        thumb: topThumb,
         value: topValue,
       );
     }
@@ -1274,6 +1275,7 @@
       enableAnimation: _enableAnimation,
       isDiscrete: isDiscrete,
       isOnTop: false,
+      textDirection: textDirection,
       sliderTheme: _sliderTheme,
       thumb: bottomThumb,
     );
@@ -1284,8 +1286,9 @@
       enableAnimation: _enableAnimation,
       isDiscrete: isDiscrete,
       isOnTop: thumbDelta < sliderTheme.rangeThumbShape.getPreferredSize(isEnabled, isDiscrete).width,
+      textDirection: textDirection,
       sliderTheme: _sliderTheme,
-      thumb: _lastThumbSelection,
+      thumb: topThumb,
     );
   }
 
diff --git a/packages/flutter/lib/src/material/slider_theme.dart b/packages/flutter/lib/src/material/slider_theme.dart
index 9249ad4..d43c3a0 100644
--- a/packages/flutter/lib/src/material/slider_theme.dart
+++ b/packages/flutter/lib/src/material/slider_theme.dart
@@ -1193,6 +1193,10 @@
   ///
   /// {@macro flutter.material.rangeSlider.shape.sliderTheme}
   ///
+  /// [textDirection] can be used to determine how the orientation of either
+  /// slider thumb should be changed, such as drawing different shapes for the
+  /// left and right thumb.
+  ///
   /// {@macro flutter.material.rangeSlider.shape.thumb}
   void paint(
     PaintingContext context,
@@ -1202,6 +1206,7 @@
     bool isDiscrete,
     bool isEnabled,
     bool isOnTop,
+    TextDirection textDirection,
     SliderThemeData sliderTheme,
     Thumb thumb,
   });
@@ -2290,6 +2295,7 @@
     bool isEnabled = false,
     bool isOnTop,
     @required SliderThemeData sliderTheme,
+    TextDirection textDirection,
     Thumb thumb,
   }) {
     assert(context != null);