Do not use BuildContexts across async gapsの解決法

現象

非同期のメソッド内で画面遷移(Navigator.popなど)をする場合に
波線の警告が出る

警告のドキュメント


解決策

①mountチェックを行う(hooksのuseIsMouted)
②lintのignore

class _Body extends HookConsumerWidget {
  const _Body();

  @override
  Widget build(BuildContext context, WidgetRef ref) {
    final isMounted = useIsMounted();

    return Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          MyButton(
            text: 'Pop',
            backgroundColor: Colors.red,
            onPressed: () async {
              await Future<void>.delayed(const Duration(seconds: 1));
              if (!isMounted()) {
                return;
              }
              //ignore: use_build_context_synchronously
              Navigator.pop(context);
            },
          ),
        ],
      ),
    );
  }
}

ファイルや特定のコードを静的解析の対象から除外する


この記事が気に入ったらサポートをしてみませんか?