borderRadius param updated in copyWith functions (#85822)

diff --git a/packages/flutter/lib/src/painting/beveled_rectangle_border.dart b/packages/flutter/lib/src/painting/beveled_rectangle_border.dart
index edbfed1..4707cbc 100644
--- a/packages/flutter/lib/src/painting/beveled_rectangle_border.dart
+++ b/packages/flutter/lib/src/painting/beveled_rectangle_border.dart
@@ -82,7 +82,7 @@
   /// Returns a copy of this RoundedRectangleBorder with the given fields
   /// replaced with the new values.
   @override
-  BeveledRectangleBorder copyWith({ BorderSide? side, BorderRadius? borderRadius }) {
+  BeveledRectangleBorder copyWith({ BorderSide? side, BorderRadiusGeometry? borderRadius }) {
     return BeveledRectangleBorder(
       side: side ?? this.side,
       borderRadius: borderRadius ?? this.borderRadius,
diff --git a/packages/flutter/lib/src/painting/continuous_rectangle_border.dart b/packages/flutter/lib/src/painting/continuous_rectangle_border.dart
index 8661aaf..6410aeb 100644
--- a/packages/flutter/lib/src/painting/continuous_rectangle_border.dart
+++ b/packages/flutter/lib/src/painting/continuous_rectangle_border.dart
@@ -134,7 +134,7 @@
   }
 
   @override
-  ContinuousRectangleBorder copyWith({ BorderSide? side, BorderRadius? borderRadius }) {
+  ContinuousRectangleBorder copyWith({ BorderSide? side, BorderRadiusGeometry? borderRadius }) {
     return ContinuousRectangleBorder(
       side: side ?? this.side,
       borderRadius: borderRadius ?? this.borderRadius,
diff --git a/packages/flutter/lib/src/painting/rounded_rectangle_border.dart b/packages/flutter/lib/src/painting/rounded_rectangle_border.dart
index 8f99267..b828bda 100644
--- a/packages/flutter/lib/src/painting/rounded_rectangle_border.dart
+++ b/packages/flutter/lib/src/painting/rounded_rectangle_border.dart
@@ -93,7 +93,7 @@
   /// Returns a copy of this RoundedRectangleBorder with the given fields
   /// replaced with the new values.
   @override
-  RoundedRectangleBorder copyWith({ BorderSide? side, BorderRadius? borderRadius }) {
+  RoundedRectangleBorder copyWith({ BorderSide? side, BorderRadiusGeometry? borderRadius }) {
     return RoundedRectangleBorder(
       side: side ?? this.side,
       borderRadius: borderRadius ?? this.borderRadius,
@@ -272,7 +272,7 @@
   }
 
   @override
-  _RoundedRectangleToCircleBorder copyWith({ BorderSide? side, BorderRadius? borderRadius, double? circleness }) {
+  _RoundedRectangleToCircleBorder copyWith({ BorderSide? side, BorderRadiusGeometry? borderRadius, double? circleness }) {
     return _RoundedRectangleToCircleBorder(
       side: side ?? this.side,
       borderRadius: borderRadius ?? this.borderRadius,
diff --git a/packages/flutter/test/painting/beveled_rectangle_border_test.dart b/packages/flutter/test/painting/beveled_rectangle_border_test.dart
index a8fdcb9..c5c02ae 100644
--- a/packages/flutter/test/painting/beveled_rectangle_border_test.dart
+++ b/packages/flutter/test/painting/beveled_rectangle_border_test.dart
@@ -19,10 +19,16 @@
     expect(const BeveledRectangleBorder().hashCode, const BeveledRectangleBorder().copyWith().hashCode);
     const BorderSide side = BorderSide(width: 10.0, color: Color(0xff123456));
     const BorderRadius radius = BorderRadius.all(Radius.circular(16.0));
+    const BorderRadiusDirectional directionalRadius = BorderRadiusDirectional.all(Radius.circular(16.0));
     expect(
       const BeveledRectangleBorder().copyWith(side: side, borderRadius: radius),
       const BeveledRectangleBorder(side: side, borderRadius: radius),
     );
+
+    expect(
+      const BeveledRectangleBorder().copyWith(side: side, borderRadius: directionalRadius),
+      const BeveledRectangleBorder(side: side, borderRadius: directionalRadius),
+    );
   });
 
   test('BeveledRectangleBorder scale and lerp', () {
@@ -74,4 +80,30 @@
     expect(border.getInnerPath(rect), looksLikeRect);
   });
 
+  test('BeveledRectangleBorder non-zero BorderRadiusDirectional', () {
+    const Rect rect = Rect.fromLTRB(10.0, 20.0, 30.0, 40.0);
+    final Matcher looksLikeRectLtr = isPathThat(
+      includes: const <Offset>[Offset(15.0, 25.0), Offset(20.0, 30.0)],
+      excludes: const <Offset>[Offset(10.0, 20.0), Offset(10.0, 40.0)],
+    );
+    const BeveledRectangleBorder border = BeveledRectangleBorder(
+      borderRadius: BorderRadiusDirectional.only(
+        topStart: Radius.circular(5.0),
+        bottomStart: Radius.circular(5.0),
+      ),
+    );
+
+    // Test ltr situation
+    expect(border.getOuterPath(rect,textDirection: TextDirection.ltr), looksLikeRectLtr);
+    expect(border.getInnerPath(rect,textDirection: TextDirection.ltr), looksLikeRectLtr);
+
+    final Matcher looksLikeRectRtl = isPathThat(
+      includes: const <Offset>[Offset(25.0, 35.0), Offset(25.0, 25.0)],
+      excludes: const <Offset>[Offset(30.0, 20.0), Offset(30.0, 40.0)],
+    );
+
+    // Test Rtl situation
+    expect(border.getOuterPath(rect,textDirection: TextDirection.rtl), looksLikeRectRtl);
+    expect(border.getInnerPath(rect,textDirection: TextDirection.rtl), looksLikeRectRtl);
+  });
 }
diff --git a/packages/flutter/test/painting/continuous_rectangle_border_test.dart b/packages/flutter/test/painting/continuous_rectangle_border_test.dart
index 37be39a..7fda5b3 100644
--- a/packages/flutter/test/painting/continuous_rectangle_border_test.dart
+++ b/packages/flutter/test/painting/continuous_rectangle_border_test.dart
@@ -19,10 +19,17 @@
     expect(const ContinuousRectangleBorder().hashCode, const ContinuousRectangleBorder().copyWith().hashCode);
     const BorderSide side = BorderSide(width: 10.0, color: Color(0xff123456));
     const BorderRadius radius = BorderRadius.all(Radius.circular(16.0));
+    const BorderRadiusDirectional directionalRadius = BorderRadiusDirectional.all(Radius.circular(16.0));
+
     expect(
       const ContinuousRectangleBorder().copyWith(side: side, borderRadius: radius),
       const ContinuousRectangleBorder(side: side, borderRadius: radius),
     );
+
+    expect(
+      const ContinuousRectangleBorder().copyWith(side: side, borderRadius: directionalRadius),
+      const ContinuousRectangleBorder(side: side, borderRadius: directionalRadius),
+    );
   });
 
   test('ContinuousRectangleBorder scale and lerp', () {
@@ -73,6 +80,31 @@
     expect(border.getInnerPath(rect), looksLikeRect);
   });
 
+  test('ContinuousRectangleBorder non-zero BorderRadiusDirectional', () {
+    const Rect rect = Rect.fromLTRB(10.0, 20.0, 30.0, 40.0);
+    final Matcher looksLikeRectLtr = isPathThat(
+      includes: const <Offset>[Offset(15.0, 25.0), Offset(20.0, 30.0)],
+      excludes: const <Offset>[Offset(10.0, 20.0), Offset(10.0, 40.0)],
+    );
+    const ContinuousRectangleBorder border = ContinuousRectangleBorder(
+      borderRadius: BorderRadiusDirectional.only(
+        topStart: Radius.circular(5.0),
+        bottomStart: Radius.circular(5.0),
+      ),
+    );
+
+    expect(border.getOuterPath(rect,textDirection: TextDirection.ltr), looksLikeRectLtr);
+    expect(border.getInnerPath(rect,textDirection: TextDirection.ltr), looksLikeRectLtr);
+
+    final Matcher looksLikeRectRtl = isPathThat(
+      includes: const <Offset>[Offset(25.0, 35.0), Offset(25.0, 25.0)],
+      excludes: const <Offset>[Offset(30.0, 20.0), Offset(30.0, 40.0)],
+    );
+
+    expect(border.getOuterPath(rect,textDirection: TextDirection.rtl), looksLikeRectRtl);
+    expect(border.getInnerPath(rect,textDirection: TextDirection.rtl), looksLikeRectRtl);
+  });
+
   testWidgets('Golden test even radii', (WidgetTester tester) async {
     await tester.pumpWidget(RepaintBoundary(
       child: Material(
diff --git a/packages/flutter/test/painting/rounded_rectangle_border_test.dart b/packages/flutter/test/painting/rounded_rectangle_border_test.dart
index 37f95c4..f0d62e9 100644
--- a/packages/flutter/test/painting/rounded_rectangle_border_test.dart
+++ b/packages/flutter/test/painting/rounded_rectangle_border_test.dart
@@ -20,10 +20,17 @@
     expect(const RoundedRectangleBorder().hashCode, const RoundedRectangleBorder().copyWith().hashCode);
     const BorderSide side = BorderSide(width: 10.0, color: Color(0xff123456));
     const BorderRadius radius = BorderRadius.all(Radius.circular(16.0));
+    const BorderRadiusDirectional directionalRadius = BorderRadiusDirectional.all(Radius.circular(16.0));
+
     expect(
       const RoundedRectangleBorder().copyWith(side: side, borderRadius: radius),
       const RoundedRectangleBorder(side: side, borderRadius: radius),
     );
+
+    expect(
+      const RoundedRectangleBorder().copyWith(side: side, borderRadius: directionalRadius),
+      const RoundedRectangleBorder(side: side, borderRadius: directionalRadius),
+    );
   });
 
   test('RoundedRectangleBorder', () {