目次
変数を書き換える方法
以下の様に、「testStr」の変数の値を書き換えるには「testStr = "書き換えたい値";」とする事で書き換える事ができます。
しかし、この様に書き換えると、「testStr」を画面に表示する様な処理を行なっている場合には、画面の値は変更されません。
import 'package:flutter/material.dart';
void main() => runApp(TestPageState());
class TestPage extends StatefulWidget {
const TestPage({Key? key}) : super(key: key);
@override
TestPageState createState() => TestPageState();
}
class TestPageState extends State<TestPage> {
// 変数
String testStr = '変数のテキスト';
@override
Widget build(BuildContext context) {
testStr = "変更";
〜〜〜省略〜〜〜
}
}
変数を書き換えて画面に描画する方法
以下が、変数の情報を画面に描画しておき、ボタン押下で変数の中身を変更するサンプルです。
import 'package:flutter/material.dart';
void main() => runApp(TestPageState());
class TestPage extends StatefulWidget {
const TestPage({Key? key}) : super(key: key);
@override
TestPageState createState() => TestPageState();
}
class TestPageState extends State<TestPage> {
// 変数
String testStr = '変数のテキスト';
@override
Widget build(BuildContext context) {
return Scaffold(
body:Center(
child: Column(
children: [
Text('$testStr'),
RaisedButton(
onPressed: () {
setState(() {
testStr = "変更後のテキスト";
});
},
child: Text("変数書き換えボタン"),
),
],
mainAxisAlignment: MainAxisAlignment.center,
),
)
);
}
}
注目するべきは、以下の様に「setState」の中で「testStr = "変更後のテキスト";」の変数書き換えを行なっている事です。
「setState」の中で変数を書き換えることで、「build」の関数が再度実行され、画面の描画が再実行されるため、画面表示が変わるという結果になります。
setState(() {
testStr = "変更後のテキスト";
});