例えば、アプリ内の各画面遷移時やバックグラウンドから復帰時にアプリアップデートが必要かを調べ、必要な場合に強制アップデートダイアログを出す場合とかにルートでダイアログを使いたくなる。 ポイントは2点 ## 1. MaterialApp Widget内でshowDialogする https://stackoverflow.com/questions/53294551/showdialog-from-root-widget MaterialAppでBuildContextが暗黙的に生成されるので、その中でshowDialogしないとcontextが無くエラーになる。 ## 2. Future.delayedでshowDialogする https://stackoverflow.com/questions/52059024/show-dialog-on-widget/52062540#52062540 StateNotifierとかChangeNotifierでStateを判定 → その結果に基づいてshowDialogしたりしている場合、ただshowDialogしてもエラーになる。 (1.と同様の理由?) 記事のように、即時実行でなくFuture.delayedを使って処理を後ろに回してshowDialogすると正常に動作する。 State変更によるWidget再構築によってBuildContextが一時的に消失するのが原因かな?とは思っている。 [実際の実行サンプル](https://coneta.jp/article/show/2923)
2021/01/24 20:11:27

コメント (0)

あなたもコメントしてみませんか

アカウント新規作成(無料)

既にアカウントを持っている方は ログイン