Do not use BuildContext across async gaps

Don't use 'BuildContext' across async gaps. (use_build_context_synchronously)

Quick Answer

A lint warning that BuildContext was used after an await, where the widget may no longer exist.

Why This Happens

In Flutter, using BuildContext after an await is unsafe because the widget associated with that context may have been removed from the tree during the async gap. The linter warns about this. Store context-dependent values before the await or check mounted after.

The Problem

onPressed: () async {
  await saveData();
  Navigator.of(context).pop(); // Context may be invalid!
  ScaffoldMessenger.of(context).showSnackBar(...);
}

The Fix

onPressed: () async {
  final navigator = Navigator.of(context);
  final messenger = ScaffoldMessenger.of(context);
  await saveData();
  if (mounted) {
    navigator.pop();
    messenger.showSnackBar(...);
  }
}

Step-by-Step Fix

  1. 1

    Identify the error

    Look at the lint warning: use_build_context_synchronously. BuildContext is used after an await statement.

  2. 2

    Find the cause

    Check for context-dependent calls (Navigator, ScaffoldMessenger, Theme) that occur after an await in the same function.

  3. 3

    Apply the fix

    Capture context-dependent objects before the await, then check mounted before using them afterward.

Bugsly catches this automatically

Bugsly's AI analyzes this error pattern in real-time, explains what went wrong in plain English, and suggests the exact fix — before your users even report it.

Try Bugsly free