繁体   English   中英

Flutter:TextButton 中的 setState 不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM