Necesito hacer la transición entre mis pantallas con rutas con nombre. Pero cuando uso más de 1 ruta, transita con la transición predeterminada y no la de la biblioteca flutter_page_transitions.

Esto no funciona:

      initialRoute: '/first',
      routes: {
        '/first': (context) => First(),
        '/second': (context) => Second(),
        '/third': (context) => Third(),
      },
      onGenerateRoute: (settings) {
        switch (settings.name) {
          case '/first': {
              return PageTransition(
                  child: First(), type: PageTransitionType.fade);
          }
          break;

          case '/second': {
              return PageTransition(
                  child: Second(), type: PageTransitionType.fade);
          }
          break;

          case '/third': {
              return PageTransition(
                  child: Third(), type: PageTransitionType.fade);
          }
          break;

          default: {
            return null;
          }
        }
      },


Esto funciona

      onGenerateRoute: (settings) {
        switch (settings.name) {
          case '/first': {
              return PageTransition(
                  child: First(), type: PageTransitionType.fade);
          }
          break;

          default: {
            return null;
          }
        }
      },
0
Jacob 25 may. 2020 a las 19:46

2 respuestas

¡Gracias chicos! Solución: comenté las rutas

      initialRoute: '/first',
      /*routes: {
        '/first': (context) => First(),
        '/second': (context) => Second(),
        '/third': (context) => Third(),
      },*/
      onGenerateRoute: (settings) {
        switch (settings.name) {
          case '/first': {
              return PageTransition(
                  child: First(), type: PageTransitionType.fade);
          }
          break;

          case '/second': {
              return PageTransition(
                  child: Second(), type: PageTransitionType.fade);
          }
          break;

          case '/third': {
              return PageTransition(
                  child: Third(), type: PageTransitionType.fade);
          }
          break;

          default: {
            return null;
          }
        }
      },


0
Jacob 25 may. 2020 a las 16:59

No debería tener la misma ruta en ambas rutas: y enGenerateRoute. Son mutuamente excluyentes. Así que elija qué bloque de código desea procesar su ruta.

OnGenerateRoute recoge rutas que no están especificadas en rutas:

0
GrahamD 25 may. 2020 a las 17:38