Repository: flutter
Issue: Unable to change Radio() widget fillColor with ThemeData.radioTheme
Labels: framework,f: material design,good first issue,P2,team-design,triaged-design,f: theming

### Steps to reproduce

One cannot define a Theme for a Radio button widget which changes the `fillColor` : 


```dart
                              Theme(
                                data: ThemeData(
                                  radioTheme: RadioThemeData(
                                    fillColor: MaterialStateProperty.resolveWith<Color>((Set<MaterialState> states) {
                                      if (states.contains(MaterialState.disabled)) {
                                        return Colors.blueAccent.withOpacity(.32);
                                      }
                                      return Colors.blueAccent;
                                    }),
                                  ),
                                ),
                                child: Radio(
                                    value: deliveryOptions[0],
                                    groupValue: currentDeliveryMethod,
                                    onChanged: _radioChanged,
                                  ),
                              )
```

I believe it's because of the way Radio() widget is defined in 
`./packages/flutter/lib/src/material/radio.dart`

especially:

line: 485

```dart
final Color? activeColor = widget.fillColor?.resolve(activeStates)
      ?? _widgetFillColor.resolve(activeStates)
      ?? radioTheme.fillColor?.resolve(activeStates);
```

where `_widgetFillColor` is always defined to be: 

```dart
MaterialStateProperty<Color?> get _widgetFillColor {
    return MaterialStateProperty.resolveWith((Set<MaterialState> states) {
      if (states.contains(MaterialState.disabled)) {
        return null;
      }
      if (states.contains(MaterialState.selected)) {
        return widget.activeColor;
      }
      return null;
    });
  }
```

a hotfix for that would be to define it directly in the Radio widget:

```dart
                                Radio(
                                    fillColor: MaterialStateProperty.resolveWith<Color>((Set<MaterialState> states) {
                                       if (states.contains(MaterialState.disabled)) {
                                         return Colors.blueAccent.withOpacity(.32);
                                       }
                                       return Colors.blueAccent;
                                     }),
                                    value: deliveryOptions[0],
                                    groupValue: currentDeliveryMethod,
                                    onChanged: _radioChanged,
                                  ),
```

### Expected results

Expected result would be to respect context.theme.themeData.radioTheme.fillColor data in Radio() widget

```dart
                              Theme(
                                data: ThemeData(
                                  radioTheme: RadioThemeData(
                                    fillColor: MaterialStateProperty.resolveWith<Color>((Set<MaterialState> states) {
                                      if (states.contains(MaterialState.disabled)) {
                                        return Colors.blueAccent.withOpacity(.32);
                                      }
                                      return Colors.blueAccent;
                                    }),
                                  ),
                                ),
                                child: Radio(
                                    value: deliveryOptions[0],
                                    groupValue: currentDeliveryMethod,
                                    onChanged: _radioChanged,
                                  ),
                              )
```

### Actual results

Radio() widget ignores context.theme.themeData.radioTheme.fillColor and is always the default color unless one overrides fillColor directly in the Widget

### Code sample

<details open><summary>Code sample</summary>

```dart
                              Theme(
                                data: ThemeData(
                                  radioTheme: RadioThemeData(
                                    fillColor: MaterialStateProperty.resolveWith<Color>((Set<MaterialState> states) {
                                      if (states.contains(MaterialState.disabled)) {
                                        return Colors.blueAccent.withOpacity(.32);
                                      }
                                      return Colors.blueAccent;
                                    }),
                                  ),
                                ),
                                child: Radio(
                                    value: deliveryOptions[0],
                                    groupValue: currentDeliveryMethod,
                                    onChanged: _radioChanged,
                                  ),
                              )

```

</details>


### Screenshots or Video

<details open>
<summary>Screenshots / Video demonstration</summary>

[Upload media here]

</details>


### Flutter Doctor output

<details open><summary>Doctor output</summary>

```console
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.24.0, on macOS 14.5 23F79 darwin-arm64, locale en-US)
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 16.0)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2023.3)
[✓] Android Studio (version 2024.2)
[✓] Android Studio (version 2023.1)
[✓] Android Studio (version 2022.3)
[✓] IntelliJ IDEA Community Edition (version 2023.2)
[✓] VS Code (version 1.89.0)
[✓] Connected device (4 available)
[✓] Network resources
```

</details>