Android 颤振:如何使用Navigator PushName为屏幕构造函数发送所需参数

Android 颤振:如何使用Navigator PushName为屏幕构造函数发送所需参数,android,ios,flutter,dart,navigator,Android,Ios,Flutter,Dart,Navigator,我有一张路线图,从中我可以用颤振来调用屏幕。我需要将三个参数传递给下一个屏幕的构造函数方法。我想使用Navigator.pushNamed(),但当我使用arguments属性时,它似乎不起作用 //Screen to build class ResultPage extends StatelessWidget{ ResultPage( {@required this.calc1Result, @required this.calc2Text, @required this.int

我有一张路线图,从中我可以用颤振来调用屏幕。我需要将三个参数传递给下一个屏幕的构造函数方法。我想使用Navigator.pushNamed(),但当我使用arguments属性时,它似乎不起作用

//Screen to build 
class ResultPage extends StatelessWidget{
ResultPage(
  {@required this.calc1Result,
  @required this.calc2Text,
  @required this.interpretation});

  final String calc1Result;
  final String calc2Text;
  final String interpretation;

   @override
   Widget build(BuildContext context) {  //etc.. etc... }

  --------------------------------------------------------------------------
然后我需要从另一个页面调用此屏幕,执行以下操作:

  //Call to ResultPage from another screen
  Calculator calculator = Calculator(param1: param1, param2: param2);


   Navigator.pushNamed(context, 'resultPage', arguments: 
       {
       'calc1Result': calculator.getCalc1Result(),
       'calc2Text': calculator.getCalc2Text()
       'interpretation': calculator.getInterpretation(),           
       });
它根本不起作用,结果总是空的

而如果我使用Navigator.push()做同样的事情,它就会工作

//Working alternative - I don't want to use this:
Navigator.push(
              context,
              MaterialPageRoute(
                builder: (context) => ResultPage(
                  calc1Result: calculator.getCalc1Result(),
                  calc2Text: calculator.getCalc2Text(),
                  interpretation: calculator.getInterpretation(),                      
                ),
              ),
            );

您是否已将命名路由添加到MaterialApp小部件中

MaterialApp(
  routes: {
    ExtractArgumentsScreen.routeName: (context) => ExtractArgumentsScreen(),
  },
);
请看这里:

然后在ResultPage中,您必须使用以下参数提取参数:

@override
  Widget build(BuildContext context) {
    // Extract the arguments from the current ModalRoute settings and cast
    // them as ScreenArguments.
    final args = ModalRoute.of(context).settings.arguments;

...
}

你好是的,当然我做了,路由工作正常,但是参数没有传递给ResultPage的构造函数;对于命名路由,您必须通过ModalRoute.of()访问设置参数;我加了一个样品。