Я хотел бы, чтобы переключатель был светлее (менее широкий круг), когда он не выбран, есть ли способ это изменить? Первая картинка - это то, что у меня есть. Второе — это то, что мне хотелось бы иметь.
Это мой код:
RadioListTile(
controlAffinity: ListTileControlAffinity.trailing,
title: Text('Active'),
value: OfferStatus.active,
groupValue: OfferStatus.inactive,
onChanged: (value) {},
),
ника
fillColor: MaterialStateProperty.all(const Color.fromARGB(255, 224, 224, 224))
Приятного кодирования :)
Я не хочу менять цвет, я спрашивал о ширине
Не напрямую, нет. Виджет Radio
на удивление ограничен в плане того, что вы можете напрямую использовать в теме. Однако, поскольку ваш Radio
неизбежно будет находиться в StatefulWidget
, вы можете полностью переключить видимость Radio
и отображать любой виджет, который захотите. В качестве альтернативы можно использовать виджет Stack
, чтобы наложить другой виджет поверх Radio
. Наконец, вы можете использовать ShaderMask
, чтобы наложить что-то. Я не могу дать вам точный код, но он будет выглядеть примерно так:
ShaderMask(
shaderCallback: (Rect bounds) {
if (isActive) {
return const LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
stops: [
0,
0.75,
0.95,
],
colors: [
Colors.white,
Colors.white,
Colors.transparent,
],
).createShader(bounds);
}
return const LinearGradient(colors: [Colors.white, Colors.white])
.createShader(bounds);
},
child: Radio(),
)
Очевидно, что этот конкретный шейдер будет рисовать градиент, но вы можете использовать его, чтобы рисовать все, что захотите.
Вы можете использовать контейнер с декором, а для анимации использовать виджет кроссфейда.