Flutter setState()未更新颤振中的值

Flutter setState()未更新颤振中的值,flutter,dart,statefulwidget,Flutter,Dart,Statefulwidget,问题:根据我找到的其他解决方案,我在构建函数外部初始化了变量,但setState()仍然没有更新我的值 在这里,我试图将ldn(左骰子数)的值从1更新为6,当它感觉到触摸时。当我在控制台上打印值时,它显示: I/flutter (29149): LDN = 1 I/flutter (29149): LDN = 6 以下是我的有状态小部件的代码: class DicePage extends StatefulWidget { @override _DicePageState create

问题:根据我找到的其他解决方案,我在构建函数外部初始化了变量,但setState()仍然没有更新我的值

在这里,我试图将ldn(左骰子数)的值从1更新为6,当它感觉到触摸时。当我在控制台上打印值时,它显示:

I/flutter (29149): LDN = 1
I/flutter (29149): LDN = 6
以下是我的有状态小部件的代码:

class DicePage extends StatefulWidget {
  @override
  _DicePageState createState() => _DicePageState();
}


class _DicePageState extends State<DicePage> {
  int ldn;
  @override
  Widget build(BuildContext context) {
    ldn = 1;
    return Center(
      child: Row(
        children: <Widget>[
          Expanded(
            child: Padding(
              padding: const EdgeInsets.fromLTRB(16, 16, 8, 16),
              child: FlatButton(
                padding: EdgeInsets.all(0),
                onPressed: (){
                  setState(() {
                    print('LDN = $ldn');
                    ldn = 6;
                    print('LDN = $ldn');
                  });
                },
                child: Image.asset('images/dice$ldn.png'),
              ),
            ),
          ),
          Expanded(
            child:Padding(
              padding: const EdgeInsets.fromLTRB(8, 16, 16, 16),
              child: FlatButton(
                onPressed: (){
                  print('Right buttin got pressde');
                },
                padding: EdgeInsets.all(0),
                child: Image.asset('images/dice1.png'),
              ),
            ),
          )
        ],
      ),
    );
  } // Build
}
class页面扩展StatefulWidget{
@凌驾
_DicePageState createState()=>\u DicePageState();
}
类_DicePageState扩展状态{
int ldn;
@凌驾
小部件构建(构建上下文){
ldn=1;
返回中心(
孩子:排(
儿童:[
扩大(
孩子:填充(
填充:LTRB(16,16,8,16)中的常数边集,
孩子:扁平按钮(
填充:边缘集。全部(0),
已按下:(){
设置状态(){
打印('LDN=$LDN');
ldn=6;
打印('LDN=$LDN');
});
},
子项:Image.asset('images/dice$ldn.png'),
),
),
),
扩大(
孩子:填充(
填充:LTRB(8,16,16,16)中的常量边集,
孩子:扁平按钮(
已按下:(){
打印(“右buttin已按下”);
},
填充:边缘集。全部(0),
子级:Image.asset('images/dice1.png'),
),
),
)
],
),
);
}//构建
}

不要在内部版本中再次设置值:使其
int ldn=1
build()
之外,您在build函数的顶部声明了ldn=1。这就是为什么每次使用setState刷新状态(基本上是页面)时,ldn都会被赋值为1。去掉那条线,非常感谢!不要在构建中再次设置值:使其
intldn=1
build()
之外,您在build函数的顶部声明了ldn=1。这就是为什么每次使用setState刷新状态(基本上是页面)时,ldn都会被赋值为1。去掉那条线,非常感谢!