Flutter. Undefined name 'BuildContext'

Ошибка "Undefined name 'BuildContext'" в Flutter обычно возникает, когда вы пытаетесь использовать класс BuildContext без импорта необходимого пакета Flutter.

Вот как можно это исправить:

  1. Убедитесь, что импортирован пакет material Flutter: Добавьте следующую строку импорта в начало вашего Dart-файла, если её нет:

    import 'package:flutter/material.dart';
    

    Этот пакет содержит класс BuildContext и другие важные виджеты и утилиты.

  2. Проверьте область видимости BuildContext: Убедитесь, что вы ссылаетесь на BuildContext внутри виджета или функции, которая принимает его в качестве параметра. Если вы пытаетесь использовать BuildContext вне дерева виджетов, возможно, вам нужно передать его из виджета в нужную область.

    Пример с неправильным использованием:

    void showCustomDialog() {
      // Здесь будет ошибка, так как BuildContext недоступен
      showDialog(
        context: context, // Ошибка: контекст недоступен
        builder: (BuildContext context) {
          return AlertDialog(
            title: Text('Ошибка'),
            content: Text('Контекст недоступен!'),
          );
        },
      );
    }
    

    В этом примере context не определён в пределах функции showCustomDialog(), и вы получите ошибку "Undefined name 'context'".

    Правильное использование с передачей BuildContext:
     

    void showCustomDialog(BuildContext context) {
      showDialog(
        context: context, // Здесь контекст передан как параметр
        builder: (BuildContext context) {
          return AlertDialog(
            title: Text('Успех'),
            content: Text('Контекст передан успешно!'),
          );
        },
      );
    }
    
    class MyHomePage extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('Пример с контекстом'),
          ),
          body: Center(
            child: ElevatedButton(
              onPressed: () {
                // Передаем BuildContext в функцию
                showCustomDialog(context);
              },
              child: Text('Показать диалог'),
            ),
          ),
        );
      }
    }
    

    Объяснение:

    • В правильном примере функция showCustomDialog принимает BuildContext в качестве параметра. Это позволяет ей использовать контекст там, где он доступен — внутри метода build виджета.
    • Когда вы нажимаете на кнопку, BuildContext, который передается в build, используется для отображения диалогового окна.