Flutterでは、画面遷移時にデータを受け取る方法としては、
StatelessWidgetと、StatefulWidget の場合で、少し方法が異なります。
StatelessWidget でデータを受け取る場合
データを受け取る方法としては、
・引数を受け取るための変数を用意する。
・コンストラクタにデータを受け取るための引数を追加する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
class NextPage extends StatelessWidget { // 画面遷移元からのデータを受け取る変数 final int value; // コンストラクタ const NextPage({Key? key, required this.value}) : super(key: key); @override Widget build(BuildContext context) { return Scaffold( … , // 省略 ); } } |
StatefulWidget でデータを受け取る場合
StatefulWidget の場合でも、基本的には、StatelessWidget と同じ方法となります。
データを受け取る方法としては、
・引数を受け取るための変数を用意する。
・コンストラクタにデータを受け取るための引数を追加する。
StatefulWidgetの場合は、 widgit.変数名 でデータを参照することができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
class NextPage extends StatefulWidget { // 画面遷移元からのデータを受け取る変数 final int value; // コンストラクタ const NextPage({Key? key, required this.value}) : super(key: key); @override State<NextPage> createState() => _NextPageState(); } class _NextPageState extends State<NextPage> { // 状態を管理する変数 late int state; @override void initState() { super.initState(); // 受け取ったデータを状態を管理する変数に格納 state = widget.value; } @override Widget build(BuildContext context) { return Scaffold( … , // 省略 ); } } |
データの渡し方
データを渡す遷移元については、画面遷移先が Statelessでも、Statefulでも関係ありません。
下記のように、画面遷移先を指定する際に、渡すデータを引数に指定することで、画面遷移先にデータを渡すことができます。
1 2 3 4 |
Navigator.push( context, MaterialPageRoute(builder: (context) => NextPage(value: 500)), ); |