fix: never use a transition on the shell route

Changing the PageBuilder here based on a MediaQuery causes the child to briefly
be rendered twice with the same GlobalKey, blowing up the rendering.

I believe this fixes https://github.com/krille-chan/fluffychat/issues/1534.
pull/1653/head
Rafał Hirsch 4 days ago
parent 63af3afde4
commit 7b3c1ada03
No known key found for this signature in database

@ -87,7 +87,10 @@ abstract class AppRoutes {
), ),
), ),
ShellRoute( ShellRoute(
pageBuilder: (context, state, child) => defaultPageBuilder( // Never use a transition on the shell route. Changing the PageBuilder
// here based on a MediaQuery causes the child to briefly be rendered
// twice with the same GlobalKey, blowing up the rendering.
pageBuilder: (context, state, child) => noTransitionPageBuilder(
context, context,
state, state,
FluffyThemes.isColumnMode(context) && FluffyThemes.isColumnMode(context) &&
@ -458,17 +461,24 @@ abstract class AppRoutes {
), ),
]; ];
static Page defaultPageBuilder( static Page noTransitionPageBuilder(
BuildContext context, BuildContext context,
GoRouterState state, GoRouterState state,
Widget child, Widget child,
) => ) =>
FluffyThemes.isColumnMode(context) NoTransitionPage(
? NoTransitionPage(
key: state.pageKey, key: state.pageKey,
restorationId: state.pageKey.value, restorationId: state.pageKey.value,
child: child, child: child,
) );
static Page defaultPageBuilder(
BuildContext context,
GoRouterState state,
Widget child,
) =>
FluffyThemes.isColumnMode(context)
? noTransitionPageBuilder(context, state, child)
: MaterialPage( : MaterialPage(
key: state.pageKey, key: state.pageKey,
restorationId: state.pageKey.value, restorationId: state.pageKey.value,

Loading…
Cancel
Save