[英]Flutter: setState in TextButton not working
骰子图像在 onPress 上没有改变
setState不为随机数设置骰子图像
child: Image.asset('images/dice$leftDiceNumber.png'),不工作但是
child: Image.asset('images/dice2.png'), is working 这意味着硬代码正在工作
var leftDiceNumber = 3; 当我为 leftDiceNumber 初始化它时只得到 dice3.png
请帮助在 onPress 时获取随机图像
class DicePage extends StatefulWidget { const DicePage({Key? key}): super(key: key); @override _DicePageState createState() => _DicePageState(); } class _DicePageState extends State<DicePage> { @override Widget build(BuildContext context) { var leftDiceNumber = 3; return Center( child: Row( children: [ Expanded( child: TextButton( onPressed: () { setState(() { leftDiceNumber = Random().nextInt(6) + 1; print(leftDiceNumber); // getting value in console }); }, child: Image.asset('images/dice$leftDiceNumber.png'), //child: Image.asset('images/dice1.png'), // ( works ) ),),], ),);}}
这是因为每次调用setState()
时它都会调用build
方法,并且您在build
方法中定义leftDiceNumber = 3
。 因此,即使setState()
更改了值,它也会再次设置为 3。
解决方案:移动var leftDiceNumber = 3;
在构建方法之外。
class _DicePageState extends State<DicePage> {
var leftDiceNumber = 3;
@override
Widget build(BuildContext context) {
return YourWidget();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.