flutter - Flutter statefull 小部件不更新 svg 图标
问题描述
嗨,我正在学习颤振,但遇到了这个问题。当用户单击菜单项但图标未更改时,我正在尝试更改 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);
})
],
),
);
}
}
我做错了还是在渲染后颤动无法更改 svg?
尝试使用默认图标在状态更改后也无法再次渲染?
图标:_currentIndex == 1 ?图标(Icons.work):图标(Icons.alarm),
解决方案
Flutter 中的 SVG 图像似乎存在问题,也有不同的包可用,但我建议您使用 PNG,而不是 SVG,因为 PNG 的大小小于 SVG,而且它也可以完美有效地工作,两者都在屏幕和编程。或使用已经可用的默认材质图标。 Flutter 材质图标
推荐阅读
- python - 使用 BeautifulSoup 返回被双标签包围的文本
- python - Pandas 在使用 loc 创建新列时设置 dtype
- spring-mvc - Spring restTemplate 没有返回任何东西
- android - 根据背景以编程方式更改波纹颜色
- groovy - 您如何在 readthedocs 上托管 groovydoc
- windows-subsystem-for-linux - WSL 2:在 package.json 中创建新脚本时,VS Code 的 npm 脚本不会刷新
- javascript - 如何通过回调返回请求响应?
- r - 我正在尝试在 R 中创建一个带有 while 循环的 Collatz 序列。我在这个 while 循环中做错了什么?
- google-maps - 在片段内使用 fusedlocationclient 获取 lastLocation null
- botframework - QnA Maker Bot AdaptiveCards:如何在 C# 中添加数据对象