皆さんこんにちは! 9ヶ月ぶりの投稿となりました😅 今回のテーマはGoRouterでルート管理をStatefulShellRouteを利用して実装したのですがこちらで一点問題点があったのでお知らせしたいと思います。
まずはstatefulShellRouterについて少しだけ解説を行いたいと思います。
ボトムナビゲーションの永続化が可能という点です。 しかし、永続化と言われてもピンとこないかもしれませんね...
簡単に言うと状態の維持が可能と言うことです! つまり、他の画面に移行したとしても値が保持され続けるのです
こちらの記事が詳しく記載されているのでもっと詳しく知りたい方はこちらの記事を参照されてください🙇♂️
先ほども説明したようにボトムナビゲーション毎にナビゲーションの維持をすることが可能です!
しかし、こちらはメリットでもありますが現状では状態を破棄する手法がないようです。。
これだと、メモリリークを落としやすくなってしまうのです。つまり、画面遷移を行い全てのタブを開いた状態でアプリを利用するとクラッシュしやすい状態だということ
私の場合はそもそもStatefulShellRouter
の良さを出しきれていなかったため通常のShellRouter
を利用することで状態の破棄を実現させました。
状態が破棄されると言っても毎回ローディングが走るというわけではありません!
スクロールやタブバーの位置が初期に戻るだけ?です
StatefulShellRouter
は実際に使えそうな場面はどこでしょうか?
こちらをもっと明確化させることも必要だと思いました。
などでしょうか?(難しい...)
メモリリークについてはあまり目を配っていない部分ではあったので良い勉強になったと思います。
皆様もメモリの使用量には気をつけながら実装しましょう😇
可茂IT塾ではFlutterインターンを募集しています!可茂IT塾のエンジニアの判断で、一定以上のスキルをを習得した方には有給でのインターンも受け入れています。
Read More可茂IT塾ではFlutterインターンを募集しています!可茂IT塾のエンジニアの判断で、一定以上のスキルをを習得した方には有給でのインターンも受け入れています。
Read More