Riverpod の ConsumerWidget を使っていて 'DO NOT use BuildContext across asynchronous gaps.' が出たときの対応
Tags:
Flutter
Riverpod の ConsumerWidget を使っていて ‘DO NOT use BuildContext across asynchronous gaps.’ が出た場合、サジェストされる対応方法では解決しないので解決方法を記載する。
開発環境
- Flutter SDK: 3.0.5
- flutter_riverpod: 2.0.0-dev.9
本文
問題
下記のように、Riverpod の ConsumerWidget の build 関数内で await
の後に Navigator.pop(context);
を呼ぶようなコードを書いたとする。
|
|
このとき Android Studio では下記の warning が出る。
DO NOT use BuildContext across asynchronous gaps.
上記のリンク先に対応方法が書いてあり、
if (!mounted) return;
と書くとのことなのだが、この mounted
というのが ConsumerWidget には存在しない。
対応
mounted
の代わりを探したが見つからなかったため、手っ取り早く await
の後に処理を呼ぶのを止めた。
then
で繋げてその中に処理を記述するようにする。
たとえば下記のように修正すると warning が出なくなる。
|
|
その他今週の成果物
https://gitlab.com/k1350/flutter_anger_log
以上