簡體   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