Flutter 如何在Flatter中设置WidgetsApp的属性pageRouteBuilder

Flutter 如何在Flatter中设置WidgetsApp的属性pageRouteBuilder,flutter,dart,flutter-navigation,Flutter,Dart,Flutter Navigation,为了实现非标准的导航方案,我试图了解颤振中的导航是如何在基本层面上工作的,而不仅仅是材质设计便利小部件 我一直在使用答案中的代码,并将该代码中的构建方法编辑为如下,将routes和pageRouteBuilder属性设置为非空 @override Widget build(BuildContext context) { return new WidgetsApp( onGenerateRoute: generate, pageRouteBuilder: (Ro

为了实现非标准的导航方案,我试图了解颤振中的导航是如何在基本层面上工作的,而不仅仅是材质设计便利小部件

我一直在使用答案中的代码,并将该代码中的构建方法编辑为如下,将
routes
pageRouteBuilder
属性设置为非空

@override
 Widget build(BuildContext context) {
   return new WidgetsApp(
       onGenerateRoute: generate,
       pageRouteBuilder: (RouteSettings settings, WidgetBuilder builder) {
         return MaterialPageRoute(builder: (context) => Container(color: Colors.blue,));
         },
       onUnknownRoute: unKnownRoute,
       textStyle: const TextStyle(),
       initialRoute: "/",
       routes: <String, WidgetBuilder> {
         '/test': (BuildContext context) => Container(
           child: Text('test'), 
           color: Colors.green,
         ),
       },
       color: Colors.red);
 }
@覆盖
小部件构建(构建上下文){
返回新的WidgetsApp(
onGenerateRoute:生成,
pageRouteBuilder:(路由设置,WidgetBuilder){
returnmaterialpage(builder:(context)=>Container(颜色:Colors.blue,);
},
onUnknownRoute:未知路由,
textStyle:const textStyle(),
初始路径:“/”,
路线:{
“/test”:(BuildContext)=>Container(
子项:文本('test'),
颜色:颜色。绿色,
),
},
颜色:红色);
}
这就抛出了错误

错误:参数类型“MaterialPage路由” 函数(RouteSettings、小部件函数(BuildContext))'不能为空 已分配给参数类型“PageRoute” 函数(路由设置、小部件函数(构建上下文))'

(我最初使用PageRoute小部件代替MaterialPageRoute小部件,但随后也收到了无法实例化抽象类的错误,因此为了方便起见切换到MaterialPageRoute*,设想这将是PageRoute的一个实现

*而不是为这个玩具示例编写PageRoute的新实现。)


我不知道如何解决这个问题,因为据我所知,参数和参数类型是等效的,而且我找不到任何关于如何在线设置
pageRouteBuilder
属性的示例。请解释发生此错误的原因或修复此玩具示例,我们将不胜感激。

material/app.dart
中查找如何设置
pageRouteBuilder
(如果使用Android Studio,请编写MaterialApp()在任何地方,鼠标悬停并按住Ctrl键并单击下划线,然后在打开的文件中搜索“pageRouteBuilder”),我发现可以用

 @override
  Widget build(BuildContext context) {
    final MaterialPageRoute test = MaterialPageRoute<int>(builder: (context) {
      return Container();
    });

    return new WidgetsApp(
        onGenerateRoute: generate,
        pageRouteBuilder: <T>(RouteSettings settings, WidgetBuilder builder) {
          return MaterialPageRoute(builder: builder, settings: settings);
        },
        onUnknownRoute: unKnownRoute,
        textStyle: const TextStyle(),
        initialRoute: "/",
        routes: <String, WidgetBuilder>{
          '/test': (BuildContext context) => Container(
                child: Text('test'),
                color: Colors.green,
              ),
        },
        color: Colors.red);
  }
@覆盖
小部件构建(构建上下文){
最终MaterialPageRoute测试=MaterialPageRoute(生成器:(上下文){
返回容器();
});
返回新的WidgetsApp(
onGenerateRoute:生成,
pageRouteBuilder:(路由设置,WidgetBuilder){
返回MaterialPage路线(生成器:生成器,设置:设置);
},
onUnknownRoute:未知路由,
textStyle:const textStyle(),
初始路径:“/”,
路线:{
“/test”:(BuildContext)=>Container(
子项:文本('test'),
颜色:颜色。绿色,
),
},
颜色:红色);
}
如果我将来了解到为什么
在这种情况下是有意义的,我将对其进行编辑,并在这里进行尽可能多的解释