flutter - Flutter中如何设置WidgetsApp的属性pageRouteBuilder
问题描述
我试图了解 Flutter 中的导航如何在基本级别上工作,超越 Material design 便利小部件,以实现非标准导航方案。
我一直在使用此处答案中的代码,并将该代码中的构建方法编辑为如下,将routes
andpageRouteBuilder
属性设置为非空。
@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);
}
这会引发错误
错误:无法将参数类型“MaterialPageRoute Function(RouteSettings, Widget Function(BuildContext))”分配给参数类型“PageRoute Function(RouteSettings, Widget Function(BuildContext))”
(我最初用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);
}
如果将来我知道为什么<T>
在这种情况下有意义,我将在此处对其进行编辑并进行尽可能多的解释。
推荐阅读
- python - 如何获取 pymysql 连接的最后一个 sql errno?
- java - 输入流中丢失的字节?
- python - 如何使用Python计算字符串中单词的出现次数
- asp.net - Angular 5 管理器属性 JSON
- android - 处理程序中的 Firebase 查询
- r - 更改输入后,R闪亮停止滚动到页面顶部
- php - Facebook OpenGraph 3.0 使用 PHP 发布到 FB 页面
- react-native - 删除 Horizontal FlatList React Native 中内容之间的空格
- react-native - 无法找出导致错误的原因 - React Native ToDo List App
- javascript - 当我调用它两次时,通过异步函数传递的变量正在改变