错误:函数表达式不能具有名称。 Navigator.push(context,MaterialPageRoute(builder:context){{^^^^^^^^^^^^^^^^^

时间:2020-03-19 12:43:27

标签: flutter flutter-navigation

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

lib / main.dart:20:41:错误:函数表达式不能具有名称。 Navigator.push(context,MaterialPageRoute(builder:context){ ^^^^^^^^^^^^^^^^^^ lib / main.dart:20:68:错误:不是常量表达式。 Navigator.push(context,MaterialPageRoute(builder:context){ ^^^^^^^^ lib / main.dart:20:66:错误:非可选参数不能具有默认值。 尝试删除默认值或将参数设为可选。 Navigator.push(context,MaterialPageRoute(builder:context){ ^ lib / main.dart:错误:无法将参数类型“ HomePage Function(动态)”分配给参数类型“ 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")),
          ),
        ));
  }
}

2 个答案:

答案 0 :(得分:1)

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

尝试按照以下说明更改onPressed内部的代码

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

答案 1 :(得分:0)

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

构建器将一个函数作为输入,并且我们提供了一个匿名函数,其参数为当前 context ,并且如果按下按钮,我们将返回要推送到堆栈中的类。 / p>