Error: A function expression can't have a name. Navigator.push(context, MaterialPageRoute(builder: context){ ^^^^^^^^^^^^^^^^^

Error: A function expression can't have a name. Navigator.push(context, MaterialPageRoute(builder: context){ ^^^^^^^^^^^^^^^^^

我在尝试使用 Navigator.of(context).push() 导航到另一个页面时遇到此异常:

lib/main.dart:20:41: 错误:函数表达式不能有名称。 Navigator.push(上下文,MaterialPageRoute(构建器:上下文){ ^^^^^^^^^^^^^^^^^ lib/main.dart:20:68:错误:不是常量表达式。 Navigator.push(上下文,MaterialPageRoute(构建器:上下文){ ^^^^^^^ lib/main.dart:20:66: 错误:非可选参数不能有默认值。 尝试删除默认值或使参数可选。 Navigator.push(上下文,MaterialPageRoute(构建器:上下文){ ^ lib/main.dart: 错误:参数类型 'HomePage Function(dynamic)' 无法分配给参数类型 'Route'.

代码:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        title: 'Are You Present?',
        debugShowCheckedModeBanner: false,
        home: Scaffold(
          body: Center(
            child:
                FlatButton(onPressed: () {
                  Navigator.of(context).push(
                    MaterialPageRoute(builder: context){
                      return HomePage();
                    }
                  );
                }, child: Text("Press to Continue")),
          ),
        ));
  }
}

这是正确的使用方法 Navigator.of(context).push() :

尝试将 onPressed 中的代码更改为以下内容

Navigator.of(context).push(MaterialPageRoute(
            builder: (context){
              return HomePage();
            }
          ));
Navigator.push(
            context,
            MaterialPageRoute(
              builder: (context) {
                return Demo();
              },
            ),
          );

构建器将一个函数作为输入,我们提供了一个匿名函数,其参数为当前 context,我们返回了我们想要推送的 class按下按钮时的堆栈。