Go Router 包中的 builder 和 pageBuilder 有什么区别?

Phi*_*aro 20 routes dart flutter flutter-go-router

在 Fluttergo_router包中,显然有两种创建新页面的方法,使用 abuilder或 a pageBuilder

GoRoute(
  name: 'Route',
  path: '/route',
  builder: (BuildContext context, GoRouterState state) =>
    const RouteView(...),
  pageBuilder: (BuildContext context, GoRouterState state) => 
    MaterialPage(
      child: const RouteView(...),
    ),
),
Run Code Online (Sandbox Code Playgroud)

但它们之间有什么区别呢?他们似乎做同样的事情,只是上面pageBuilder有一个包装纸,就这样吗?MaterialPage顺便问一下,aMaterialPage有用吗?

小智 28

我也有过同样的问题。从 GoRouter 的文档中,这就是我发现的全部内容:

构建器负责构建要在屏幕上显示的 Widget。或者,您可以使用 pageBuilder 自定义该路线激活时的过渡动画。页面之间使用的默认过渡取决于其小部件树顶部的应用程序,例如,使用 MaterialApp 将导致 go_router 使用 MaterialPage 过渡。考虑使用 pageBuilder 来自定义 Page 类。

所以我想我可以推断出的唯一有用的区别是 pageBuilder 允许您拥有自定义过渡动画。希望有帮助。