函数中未定义名称 'context'

Undefined name 'context' in fuction

我在任何单独的 dart 文件中定义了一个 showSnackBarr() 函数并在其他 dart 文件中使用,但在这个 stared ** 上下文下显示红线。

showSnackBar( **context** , e.toString);

showSnackBar(BuildContext context, String text) {
  return ScaffoldMessenger.of(context).showSnackBar(SnackBar(
    content: Text(text),
  ));
}
on FirebaseAuthException catch(e){

      showSnackBar(context, e.message!);
      res = false;
}

在您调用函数的地方没有名为 context 的 variable/instance 成员。通常,contextState 对象中作为 属性 可用。 BuildContext 的实例也被传递到 Widgets 的 build 方法中。

更多关于 BuildContext

您似乎在尝试从小部件外部的功能显示快餐栏。

为此,您必须将 BuildContext 连同任何参数一起传递给函数。

示例:

void myFunc(BuildContext context, dynamic data){
    try{
        // perform operation
    }
    catch(e){
        showSnackBar(context, e.message!);
    }
}

并从小部件中调用函数

myFunc(context, "any data");

如果不想每次都传递构建上下文,可以使用

我这样做是为了将一个变量初始化到 class 中,我在其中使用此函数它正在运行 final BuildContext context ; AuthMethods({required this.context });

并创建一个构造函数。