問題:私が見つけた他の解決策に従って、ビルド関数の外部で変数を初期化しましたが、setState() はまだ値を更新しません。
ここでは、タッチを感知するたびに ldn(left-dice-number) の値を 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
}