Flutter:具有多个命名路由的 flutter_page_transition 不起作用

Flutter: flutter_page_transition with multiple named routes doesn't work

我需要在具有命名路由的屏幕之间进行转换。但是当我使用超过 1 条路线时,它会使用默认转换而不是 flutter_page_transitions 库中的转换。

这行不通:

      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;
          }
        }
      },


这个有效

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

          default: {
            return null;
          }
        }
      },

谢谢大家! 解决方法:我把routes

注释掉了
      home: First();
      //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;
          }
        }
      },


你不应该在两条路线中有相同的路线:和onGenerateRoute。它们是相互排斥的。因此,请选择要处理路线的代码块。

OnGenerateRoute 取路由中没有指定的路由: