在Fluttergo_router
包中,显然有两种创建新页面的方法,builder
或pageBuilder
:
GoRoute(
name: 'Route',
path: '/route',
builder: (BuildContext context, GoRouterState state) =>
const RouteView(...),
pageBuilder: (BuildContext context, GoRouterState state) =>
MaterialPage(
child: const RouteView(...),
),
),
但是它们之间有什么区别呢?它们似乎做同样的事情,只有pageBuilder
有MaterialPage
的包装,是这样吗?顺便说一下,MaterialPage
是有用的吗?
我也有过同样的问题。从GoRouter的文档中,这是我找到的所有内容:
构建器负责构建要显示的小部件屏幕上。或者,您可以使用pageBuilder自定义当路由激活时的过渡动画。默认的根据顶部的应用程序,在页面之间使用过渡它的小部件树,例如使用MaterialApp会导致go_router使用MaterialPage转换。考虑使用pageBuilder自定义页面类。
所以我想我能推断的唯一有用的区别是pageBuilder允许你有一个自定义的过渡动画。希望对你有帮助。