Yas*_*lte 2 android setstate dart flutter
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 )
),),],
),);}}
Run Code Online (Sandbox Code Playgroud)
小智 5
那是因为你每次调用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();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1449 次 |
| 最近记录: |