#flutter #icons #flutter-layout #flutter-dependencies
#flutter #Значки #flutter-layout #flutter-зависимости
Вопрос:
Я пытаюсь изменить цвет значка SVG при нажатии. Я пробовал selectedColor
, но значок не изменил цвет. Итак, я пытаюсь использовать ярлык if … else, но мне все еще не удалось изменить цвет.
Вот этот код:
bottomNavigationBar: BottomNavigationBar(
type: BottomNavigationBarType.fixed,
items: <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: SvgPicture.asset('assets/dashboard-outline.svg', width: 25),
label: 'Dashboard'
),
BottomNavigationBarItem(
icon: SvgPicture.asset('assets/tank-outline.svg', color: Colors.black54, width: 30),
label: 'Tanks',
),
BottomNavigationBarItem(
icon: SvgPicture.asset('assets/activity-outline.svg', width: 18),
label: 'Activity'
),
BottomNavigationBarItem(
icon: SvgPicture.asset('assets/account-outline.svg', width: 20),
label: 'Account'
),
],
currentIndex: _index,
onTap: _onItemTapped,
selectedItemColor: Color.fromRGBO(0,99,183,1)
),
У меня есть другой файл для значка изображения SVG, чтобы изменить его при нажатии.
Вот код, который я пробовал:
bool onSelected = true;
Widget build(BuildContext context) {
return Scaffold(
body: _myPages[_index],
bottomNavigationBar: BottomNavigationBar(
type: BottomNavigationBarType.fixed,
items: <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: SvgPicture.asset(onSelected == false ? 'assets/dashboard-outline.svg' : 'assets/dashboard-fill.svg', width: 25),
label: 'Dashboard'
),
Любая помощь будет оценена.
Комментарии:
1. Попробуйте установить цвет для значка непосредственно с помощью
SvgPicture.asset(image, color: isSelected ? selectedIconColor : defaultIconColor)
;2.
icon: onSelected == false ? SvgPicture.asset('assets/dashboard-outline.svg', width: 25) : SvgPicture.asset('assets/dashboard-fill.svg', width: 25)
попробуйте с этим3. @ShubhamNarkhede Я пробовал это, но это не сработало
Ответ №1:
Вы можете просто изменить свои элементы, подтвердив это свойство, чтобы определить правильный цвет:
SvgPicture.asset(
'assets/dashboard-outline.svg',
width: 25),
color: _currentIndex == 0 ? Colors.red : Colors.black,