gpt4 book ai didi

android - Flutter:TextButton 中的 setState 不起作用

转载 作者:行者123 更新时间:2023-12-05 00:14:35 26 4
gpt4 key购买 nike

骰子图像在 onPress 上未发生变化
setState未设置随机数的骰子图像

child: Image.asset('images/dice$leftDiceNumber.png'), 不工作,但是
child: Image.asset('images/dice2.png'), 正在工作,这意味着硬代码正在工作

var leftDiceNumber = 3; 当我为 leftDiceNumber 初始化时仅获取 dice3.png

请帮助在按下时获取随机图像


应用程序中没有错误

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方法,并且您已经定义了 leftDiceNumber = 3里面build方法。所以即使setState()更改值,它再次设置为 3。

解决方案:移动var leftDiceNumber = 3;在构建方法之外。

class _DicePageState extends State<DicePage> {
var leftDiceNumber = 3;

@override
Widget build(BuildContext context) {
return YourWidget();
}
}

关于android - Flutter:TextButton 中的 setState 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71019587/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com