Android 颤振:如何使用Navigator PushName为屏幕构造函数发送所需参数
我有一张路线图,从中我可以用颤振来调用屏幕。我需要将三个参数传递给下一个屏幕的构造函数方法。我想使用Navigator.pushNamed(),但当我使用arguments属性时,它似乎不起作用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
//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()访问设置参数;我加了一个样品。