micomia株式会社の井上です。今回はPage Stateについて解説していきます。
初心者にもわかりやすく解説していくのでぜひご一読ください。
1. Page Stateとは
App StateとPage Stateがあり混乱しがちだと思うので比較しながら解説していきます。
Page Stateは簡単に言うとページ単位で変数を用意できるものになっています。
App Stateはさまざまなページに変数を渡すことができますが、Page Stateでは一つの画面でしか用意できないのでそれぞれの画面ごとに変数を用意する必要があります。
2. Page Stateの実装方法
Page StateはScaffoldを選択すると右側のパネルに設定箇所が表示されます。ここにも「Local Page State Variables」と記載があるようにこの画面の中でしか使用できない変数を用意するものがPage Stateです。

Add Fieldを押して、今回は試しにTypeはStringでaddress(住所)という変数を入れます。Confirmを押して適用します。

次にそのPage Stateを使いたいWidgetを追加します。今回は例としてTextを使用します。
追加できたら、Textの変数に先ほど設定したPage Stateのaddressを設定します。
今回は少し不適切ではあるのですが、このTextをタップすることでPage Stateが更新されるようにUpdate Page Stateを実装します。

実装できたら、Add Fieldを押して先ほどのPage Stateをセットします。

今回はTextをタップすることでPage Stateが更新されて群馬県と表示されるようにしたいのでValueには群馬県と入れます。これでPage Stateの実装は完了です。

Page Stateが一つの画面でしか使用できないことを確かめるために違う画面を見てみます。
先ほど設定した画面とは異なる画面でTextの変数設定箇所を見てみるとPage Stateが表示されていません。これがPage Stateの特性とも言えます。

3. さいごに
今回はPage Stateについて解説していきました。Page Stateはその画面に一時的にデータを持たせておきたい場合に使用するもので、App Stateとは似ているようで異なるものなので2つの違いに注意しながら実装していきましょう。
本記事の内容を動画で見たい方は以下をご覧ください。


.webp%3Falt%3Dmedia%26token%3Da7c14698-1b08-4fea-89c6-f77a9121f4c5&w=3840&q=75)
.webp%3Falt%3Dmedia%26token%3D899eeefd-f4c9-44a6-9ec2-3ced0b223ffd&w=3840&q=75)
.webp%3Falt%3Dmedia%26token%3Dca25fa6b-e233-43f7-90c3-e68e4c5b0bc5&w=3840&q=75)
.webp%3Falt%3Dmedia%26token%3D7f18e5f1-cfda-4148-ab86-b3d2e6547262&w=3840&q=75)




.webp%3Falt%3Dmedia%26token%3D6ca2c2ef-9413-4453-b992-55b66b11ed54&w=3840&q=75)



.webp%3Falt%3Dmedia%26token%3D900f385d-12a2-449b-8d1e-83a57cef0088&w=3840&q=75)
.webp%3Falt%3Dmedia%26token%3D0e802fb0-2dda-44a7-bf80-5d39019635ba&w=3840&q=75)
.webp%3Falt%3Dmedia%26token%3D3fb3dc66-ecca-402e-8fb8-fbec9407f7f5&w=3840&q=75)
.webp%3Falt%3Dmedia%26token%3Ddb21d760-e1ed-4ec2-af28-3462041e31b5&w=3840&q=75)
.webp%3Falt%3Dmedia%26token%3Dcce7bd72-f11e-4292-86bf-e6ccf3e7bf32&w=3840&q=75)
.webp%3Falt%3Dmedia%26token%3D457ff920-e0df-4ff5-95eb-e29f74b73823&w=3840&q=75)
.webp%3Falt%3Dmedia%26token%3Dc21fcc77-7404-458d-9eb5-85b8d84ae1bc&w=3840&q=75)
.webp%3Falt%3Dmedia%26token%3D92052f12-5280-49df-877a-b514582e95db&w=3840&q=75)