[Flutter]NavigationBarで画面切り替え時に値が初期されてしまう時の対処法

image

問題の現象

タイトルの通り、Navigationbarで画面切り返した時に、変数が初期化されてしまうので、困っていました。

こんな感じの現象です↓

問題の現象が起きるサンプルコード

main.dart

counter.dart

dammy.dart

原因

なぜ変数が初期化されてしまうのか?

それはLifecycleを確認するとわかりました。

下記のlogから画面切り替えを行うと画面が破棄されていることがわかります。

画面が破棄されているので、変数の値も破棄されているわけです。

対応策

IndexedStackを使いましょう。

具体的にはmain.dartの以下の部分を

このように書き換えます。

変更後の動作はこんな感じ。

logはこんな感じ。

disposeされなくなったことがわかります。

修正後のコードはgitにあげております。

https://github.com/jostar0024/indexedstack

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


error: Content is protected !!