#flutter #flutter-animation
#flutter #flutter-анимация
Вопрос:
Я создаю пользовательский виджет, похожий на флажок, который использует Card
. Я могу изменить цвета, если значения совпадают onTap
. Однако я хочу, чтобы он менял цвет, а не внезапно менялся.
Вот мой код:
return Card(
color: selected ? AppColors.primary : AppColors.primaryLight,
Я относительно новичок в анимации в Flutter, но, исходя из глубокого понимания интерфейса / CSS, я мог бы добиться чего-то подобного, добавив transition
свойство CSS — есть ли что-то подобное в Flutter? Если нет, может ли кто-нибудь указать мне правильное направление?
Ответ №1:
Что бы я сделал, так это вместо использования Card
виджета, я бы использовал AnimatedContainer
и имел то же условие, что и вы, для параметра цвета. Вы получите плавный переход при изменении selected
значения. Однако вам может потребоваться также добавить boxShadow
, чтобы получить тот же эффект возвышения, что и Card
AnimatedContainer(
duration: const Duration(milliseconds: 700),
curve: Curves.easeInOut,
decoration:BoxDecoration(
boxShadow: [
BoxShadow(
color: Colors.black,
blurRadius: 5,
spreadRadius: 5,
offset: Offset(0, 2),
),
],
color: selected ? AppColors.primary : AppColors.primaryLight,
),
)
Ответ №2:
Одним из способов сделать это был бы AnimatedContainer
return Card(
child: AnimatedContainer(
duration: const Duration(milliseconds: 1000),
height: 200,
width: 200,
color: selected ? Colors.red : Colors.blue,
child: FooWidget(),
),
)