Flutter 将上下文和字符串传递给MaterialPage路由的函数

Flutter 将上下文和字符串传递给MaterialPage路由的函数,flutter,Flutter,我有一个Flitter应用程序,在其中我使用SharedReferences来检查是否是用户第一次打开该应用程序。如果变量_seen为真,它会将它们发送到主屏幕。我想使用另一个dart文件中的函数--functions.dart来编写更简洁的代码 我可以在functions.dart中使用这样的函数吗 if (_seen) { print("Welcome back"); Navigator.of(context).pushReplacement(

我有一个Flitter应用程序,在其中我使用SharedReferences来检查是否是用户第一次打开该应用程序。如果变量_seen为真,它会将它们发送到主屏幕。我想使用另一个dart文件中的函数--functions.dart来编写更简洁的代码

我可以在functions.dart中使用这样的函数吗

    if (_seen) {
  print("Welcome back");
  Navigator.of(context).pushReplacement(
      MaterialPageRoute(builder: (context) => HomeScreen()));
  }
这样我就可以这样通过

  void Navigator(context, String pageName) {
          Navigator.of(context).pushReplacement(
          MaterialPageRoute(builder: (context) => $pageName()));
  }

您需要在
MaterialApp
中定义映射stringName->Widget的映射,并使用
Navigator.pushNamed
(或类似)方法进行“导航”

以下是您的操作方法:

Future goToPage(BuildContext,String pageName)=>Navigator.pushNamed(context,pageName);
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“演示”,
路线:{
“一”:(上下文)=>PageOne(),
“两个”:(上下文)=>PageTwo(),
},
初始路线:“一”,
);
}
}
类PageOne扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:正文(“第一页”),
),
正文:中(
孩子:升起按钮(
子项:文本(“转到第二页”),
按下:()=>goToPage(上下文,“两”),
),
),
);
}
}
类PageTwo扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:正文(“第二页”),
),
正文:中(
孩子:升起按钮(
子项:文本(“转到第一页”),
按下:()=>goToPage(上下文,“一”),
),
),
);
}
}
而不是
导航器(上下文,字符串页面名)
为什么不
导航器(上下文,小部件)
?或者使用名为的
pushreplacement
    if (_seen) {
  print("Welcome back");
  Navigator(context, "HomeScreen");
  }