Flutter 颤振状态完整小部件不更新svg图标
嗨,我正在学习颤振,但有这个问题。我试图在用户单击菜单项时更改svg图标,但图标没有更改。单击菜单项时,我需要更改图标Flutter 颤振状态完整小部件不更新svg图标,flutter,statefulwidget,Flutter,Statefulwidget,嗨,我正在学习颤振,但有这个问题。我试图在用户单击菜单项时更改svg图标,但图标没有更改。单击菜单项时,我需要更改图标 class BottomNavigation extends StatefulWidget { const BottomNavigation({ Key key, }) : super(key: key); @override _BottomNavigationState createState() => _BottomNavigationSta
class BottomNavigation extends StatefulWidget {
const BottomNavigation({
Key key,
}) : super(key: key);
@override
_BottomNavigationState createState() => _BottomNavigationState();
}
class _BottomNavigationState extends State<BottomNavigation> {
@override
Widget build(BuildContext context) {
num _currentIndex = 1;
return Container(
padding: EdgeInsets.only(
left: kDefaultPadding * 2,
right: kDefaultPadding * 2,
bottom: kDefaultPadding),
height: 90,
decoration: BoxDecoration(color: Colors.white, boxShadow: [
BoxShadow(
offset: Offset(0, -10),
blurRadius: 35,
color: kPrimaryColor.withOpacity(0.1))
]),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
IconButton(
icon: _currentIndex == 1
? SvgPicture.asset("assets/svg/bhomeActive.svg")
: SvgPicture.asset("assets/svg/bhome.svg"),
onPressed: () {
setState(() {
_currentIndex = 1;
});
print(_currentIndex);
}),
IconButton(
icon: _currentIndex == 5
? SvgPicture.asset("assets/svg/bprofileActive.svg")
: SvgPicture.asset("assets/svg/bprofile.svg"),
onPressed: () {
setState(() {
_currentIndex = 5;
});
print(_currentIndex);
})
],
),
);
}
}
class BottomNavigation扩展了StatefulWidget{
常量导航({
关键点,
}):super(key:key);
@凌驾
_底部导航状态createState()=>_底部导航状态();
}
类_BottomNavigationState扩展状态{
@凌驾
小部件构建(构建上下文){
num _currentIndex=1;
返回容器(
填充:仅限边缘设置(
左:kDefaultPadding*2,
右:kDefaultPadding*2,
底部:kDefaultPadding),
身高:90,
装饰:框装饰(颜色:Colors.white,框阴影:[
箱形阴影(
偏移量:偏移量(0,-10),
半径:35,
颜色:kPrimaryColor.withOpacity(0.1))
]),
孩子:排(
mainAxisAlignment:mainAxisAlignment.spaceBetween,
儿童:[
图标按钮(
图标:_currentIndex==1
?SvgPicture.asset(“assets/svg/bhomeActive.svg”)
:SvgPicture.asset(“assets/svg/bhome.svg”),
已按下:(){
设置状态(){
_currentIndex=1;
});
打印(当前索引);
}),
图标按钮(
图标:_currentIndex==5
?SvgPicture.asset(“assets/svg/bprofileActive.svg”)
:SvgPicture.asset(“assets/svg/bprofile.svg”),
已按下:(){
设置状态(){
_当前指数=5;
});
打印(当前索引);
})
],
),
);
}
}
我做错了,或者flatter在渲染后无法更改svg
尝试使用默认图标在状态更改后也不工作不再次渲染
图标:_currentIndex==1?Icon(Icons.work):Icon(Icons.alarm),Flatter中的SVG图像似乎有问题,也有不同的软件包可用,但我建议您使用PNG,而不是SVG,因为PNG的大小比SVG大,而且无论在屏幕上还是在编程上,它都能完美有效地工作。 或 使用已可用的默认材质图标。