如何解决如何更新另一个自定义 Flutter 小部件中存在的图像路径?
我试图使用 Flutter 的桌面实现创建一个应用程序,该应用程序将使用 JSON 文件读取图像的路径,将路径传递给自定义小部件,小部件将在容器内显示带有悬停动画的图像。
声明的变量如下:
String characterName = 'Elise';
var skill_icon_path =
characterData[characterName]['ability 1']['icon path'];
ButtonAnimation(
imagePath: skill_icon_path,height: 70,width: 70,),
ButtonAnimation 小部件的代码如下:
import 'package:Flutter/material.dart';
class ButtonAnimation extends StatefulWidget {
ButtonAnimation({Key key,this.imagePath,this.height,this.width})
: super(key: key);
final String imagePath;
final double height;
final double width;
@override
buttonAnimationState createState() =>
buttonAnimationState(imagePath,height,width);
}
class buttonAnimationState extends State<ButtonAnimation> {
final String imageSrc;
buttonAnimationState(this.imageSrc,this.width);
final double height;
final double width;
bool isHover = false;
bool animation_ended = false;
@override
Widget build(BuildContext context) {
return Container(
height: height,width: width,child: InkWell(
child: Container(
decoration: Boxdecoration(
border: Border.all(
width: 1,color: isHover ? Colors.red : Colors.grey)),child: Stack(
children: [
AnimatedContainer(
duration: Duration(milliseconds: 200),padding: EdgeInsets.all(10),child: Image(
image: Assetimage(imageSrc),color: Colors.grey,AnimatedContainer(
padding: EdgeInsets.all(10),onEnd: () {
setState(() {
animation_ended = true;
});
},duration: Duration(milliseconds: 50),color: Colors.red,child: Visibility(
visible: animation_ended,child: Image(
image: Assetimage(imageSrc),color: Colors.white,height: double.infinity,width: isHover ? width : 0,)
],onTap: () {},onHover: (value) {
setState(() {
isHover = !isHover;
print(imageSrc);
});
},);
}
}
但是,当 characterName
变量更改时,主类中图像的 JSON 路径会更改,但不会更新 ButtonAnimation 小部件中的路径。
也就是说,如果 characterName
设置为 characterName = "Jhon"
,则主类中图像的路径从 assets/media/skill_icons/elise/elise_ability.png
更改为 assets/media/skill_icons/jhon/jhon_ability.png
,但提供给 ButtonAnimation 的路径保持在 { {1}}。因此,我在想是否有办法在主类中更新路径时更新ButtonAnimation中的图像路径。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。