setState () не обновляет значение в флаттере - PullRequest
1 голос
/ 31 марта 2020

Проблема: Согласно другим решениям, которые я нашел, я инициализировал свою переменную вне функции сборки, но setState () по-прежнему не обновляет мое значение.

Здесь я пытаюсь обновить значение ldn (номер левого кубика) до 6 с 1, когда оно когда-либо почувствует прикосновение. Когда я печатаю значения на консоли, он показывает:

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
}
...