Flutter. Undefined name 'BuildContext'

Ошибка "Undefined name 'BuildContext'" в Flutter обычно возникает, когда вы пытаетесь использовать класс BuildContext
без импорта необходимого пакета Flutter.
Вот как можно это исправить:
-
Убедитесь, что импортирован пакет material Flutter: Добавьте следующую строку импорта в начало вашего Dart-файла, если её нет:
import 'package:flutter/material.dart';
Этот пакет содержит класс
BuildContext
и другие важные виджеты и утилиты. -
Проверьте область видимости
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
, используется для отображения диалогового окна.
- В правильном примере функция