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'),
颜色:颜色。绿色,
),
},
颜色:红色);
}
如果我将来了解到为什么
在这种情况下是有意义的,我将对其进行编辑,并在这里进行尽可能多的解释