Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 颤振状态完整小部件不更新svg图标_Flutter_Statefulwidget - Fatal编程技术网

Flutter 颤振状态完整小部件不更新svg图标

Flutter 颤振状态完整小部件不更新svg图标,flutter,statefulwidget,Flutter,Statefulwidget,嗨,我正在学习颤振,但有这个问题。我试图在用户单击菜单项时更改svg图标,但图标没有更改。单击菜单项时,我需要更改图标 class BottomNavigation extends StatefulWidget { const BottomNavigation({ Key key, }) : super(key: key); @override _BottomNavigationState createState() => _BottomNavigationSta

嗨,我正在学习颤振,但有这个问题。我试图在用户单击菜单项时更改svg图标,但图标没有更改。单击菜单项时,我需要更改图标

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大,而且无论在屏幕上还是在编程上,它都能完美有效地工作。 或 使用已可用的默认材质图标。