如何解决如何在Flutter中设置WidgetsApp的属性pageRouteBuilder
我正在尝试了解Flutter中的导航如何在Material Design便捷小部件之外的基本级别上工作,以实现非标准导航方案。
我一直在使用答案here中的代码,并根据该代码将构建方法编辑如下,将routes
和pageRouteBuilder
属性设置为non -空。
@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 函数(RouteSettings,小部件函数(BuildContext))不能为 分配给参数类型'PageRoute Function(RouteSettings,Widget Function(BuildContext))'
((我最初使用PageRoute小部件代替MaterialPageRoute小部件,但随后又收到无法实例化抽象类的错误,为方便起见,切换到MaterialPageRoute *,想象这将是PageRoute的实现。 / p>
*而不是为此玩具示例编写新的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>
在这种情况下有意义,那么我将对此进行编辑并在此处进行解释。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。