use_build_context_synchronously   
非同期処理の合間にBuildContextを使用しないでください。
詳細
#非同期処理の合間にBuildContextを使用しないでください。
後で使用するためにBuildContextを保存すると、診断が困難なクラッシュに easily 繋がる可能性があります。非同期処理の合間は、暗黙的にBuildContextを保存しており、コードを書いている際に最も見落としやすい箇所の一つです。
BuildContextが使用される場合、非同期処理の合間の後にはmountedプロパティをチェックする必要があります。これはBuildContextへのアクセス方法によります。
- Stateの- contextプロパティを使用する場合、- Stateの- mountedプロパティをチェックする必要があります。
- その他のBuildContextインスタンス(ローカル変数や関数引数など)の場合、BuildContextのmountedプロパティをチェックする必要があります。
悪い例
dart
void onButtonTapped(BuildContext context) async {
  await Future.delayed(const Duration(seconds: 1));
  Navigator.of(context).pop();
}良い例
dart
void onButtonTapped(BuildContext context) {
  Navigator.of(context).pop();
}良い例
dart
void onButtonTapped(BuildContext context) async {
  await Future.delayed(const Duration(seconds: 1));
  if (!context.mounted) return;
  Navigator.of(context).pop();
}良い例
dart
abstract class MyState extends State<MyWidget> {
  void foo() async {
    await Future.delayed(const Duration(seconds: 1));
    if (!mounted) return; // Checks `this.mounted`, not `context.mounted`.
    Navigator.of(context).pop();
  }
}有効にする
#use_build_context_synchronouslyルールを有効にするには、analysis_options.yaml ファイルのlinter > rulesの下にuse_build_context_synchronouslyを追加してください。
analysis_options.yaml
yaml
linter:
  rules:
    - use_build_context_synchronously代わりにYAMLマップ構文を使用してリンタールールを設定している場合は、linter > rulesの下にuse_build_context_synchronously: trueを追加してください。
analysis_options.yaml
yaml
linter:
  rules:
    use_build_context_synchronously: true