⚠️
『Do not use BuildContexts across async gaps』をStatelessWidget でも簡単に回避する
void someFunction(BuildContext context) async {
await Future.delayed(const Duration(seconds: 1));
Navigator.of(context).pop();
}
この警告を解消するための代表的な方法は、StatefulWidget で mounted を使うことでした。
void someFunction(BuildContext context) async {
await Future.delayed(const Duration(seconds: 1));
if(mounted){
Navigator.of(context).pop();
}
}
StatelessWidget でも解消は可能でしたが、状況によっては難しい場合もありました。
これが、Flutter 3.7 以降では以下のように簡単に対処できるようになりました。
void someFunction(BuildContext context) async {
await Future.delayed(const Duration(seconds: 1));
if(context.mounted){
Navigator.of(context).pop();
}
}
まとめ
あくまで警告なので、無視して実行することもできますが、エラーにつながる可能性のある警告は解消しておくのがベターかと思います。
Discussion